我不想使用Infinispan作为我的数据源.提供什么样的数据库支持?Hibernate二级缓存是否必要?
Jboss 7
默认使用infinispan 5.2
.我如何将其迁移到最新infinispan 6
版本?
我正在尝试在我的应用程序中使用Jboss AS
托管Infinispan
,以便我可以使用Jboss Admin console
它来管理它.我已经尝试了基于Infinispan文档的以下步骤,
1)创建了一个名为Config的类
import javax.annotation.Resource;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;
import org.infinispan.manager.EmbeddedCacheManager;
public class Config {
@Produces
@ApplicationScoped
@Resource(lookup = "java:jboss/infinispan/test")
private EmbeddedCacheManager defaultCacheManager;
public void printObject() {
System.out.println("defaultCacheManager:" + defaultCacheManager);
}
}
Run Code Online (Sandbox Code Playgroud)
2)创建一个servlet只是为了制作Config对象并调用printObject()方法
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 3200037917839533696L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doIt(req, resp); …
Run Code Online (Sandbox Code Playgroud) 我查看了Cassandra和Infinispan的主要功能.他们似乎拥有并提供了非常相似的特征和功能:
我发现的一个区别是Infinispan不提供可调整性(每个节点都有相同的数据).
在了解Infinispan时,我遇到了Cassandra Cache Store(http://infinispan.org/docs/cachestores/cassandra/).它提供持久的数据.
但那么为什么我仍然想要直接使用Infinispan而不是Cassandra呢?
这些解决方案是否相互补充,或者它们在同一级别上更具竞争力?
我已经在集群中安装并运行了JBoss 7。我正在开发一个Spring Boot 1.3.2应用程序。我在domain.xml中定义了以下Infinispan缓存:
<cache-container name="my-cache" default-cache="auth">
<transport stack="tcp" lock-timeout="10000"/>
<replicated-cache name="auth" mode="SYNC" batching="true">
<locking isolation="REPEATABLE_READ"/>
<transaction mode="NONE"/>
<eviction strategy="LRU" max-entries="100"/>
<expiration max-idle="300000"/>
</replicated-cache>
</cache-container>
Run Code Online (Sandbox Code Playgroud)
在application.properties文件中,我定义了以下内容:
spring.cache.type=infinispan
Run Code Online (Sandbox Code Playgroud)
然后在我的缓存类中定义:
@CacheConfig(cacheNames="java:jboss/infinispan/cache/my-cache/auth")
Run Code Online (Sandbox Code Playgroud)
当我尝试在JBoss上部署应用程序时,出现以下错误:
Caused by: java.lang.IllegalArgumentException: No cache manager could be auto-configured, check your configuration (caching type is 'INFINISPAN'
Run Code Online (Sandbox Code Playgroud)
如何配置它才能正常工作?
我正在尝试在应用程序启动之前从冷启动中加载缓存。这样做可以让用户一访问服务器就可以获得值,而不必访问我的数据库。
Spring 的 @Cacheable 功能都很好用,问题是我如何手动将对象存储在缓存中,以便在执行函数时可以读取它们。
Spring 以某种方式以字节形式存储这些对象——我需要在手动加载缓存时模仿这一点。我只是想弄清楚他们如何在函数中处理返回对象,以 key,val 对的形式存储到缓存中。
信息:我的应用程序是一个简单的 JAX-RS 服务,它将一些值存储在 JBoss 7.1 提供的缓存中。
我想使用 Arquillian 调用服务并测试响应。但不幸的是,当我尝试运行测试时出现此错误:
java.lang.IllegalArgumentException:
Can not set org.infinispan.manager.CacheContainer field
com.company.DataCache.container to
org.jboss.as.clustering.infinispan.DefaultEmbeddedCacheManager
Run Code Online (Sandbox Code Playgroud)
这是我的 DataCache 类:
@ManagedBean
public class DataCache<K, V> {
@Resource(lookup="java:jboss/infinispan/container/hibernate")
private CacheContainer container;
private Cache<K, V> cache;
@PostConstruct
public void start() {
this.cache = this.container.getCache();
}
public Cache<K, V> getCache() {
return cache;
}
}
Run Code Online (Sandbox Code Playgroud)
我的测试类看起来像这样:
@RunWith(Arquillian.class)
@RunAsClient
public class SyncClientServerTest extends RbmlClientServerTest {
@Deployment(testable = false)
public static WebArchive createDeployment() {
MavenDependencyResolver mvnResolver = DependencyResolvers.use(MavenDependencyResolver.class).loadMetadataFromPom("pom.xml").goOffline();
return ShrinkWrap
.create(WebArchive.class, "cache-service.war")
.addPackages(true, …
Run Code Online (Sandbox Code Playgroud) dependency-injection exception infinispan jboss-arquillian jboss7.x
我正在尝试使用共享的 Infinispan 缓存(异步复制)对一对服务器进行集群。一个总是成功启动,并在 JDBC 数据库中正确注册自己。当另一个启动时,它在数据库中正确注册,我看到它们之间有一堆喋喋不休,然后,在等待第二个服务器的响应时,我得到
`org.infinispan.commons.CacheException: Initial statue transfer timed out`
Run Code Online (Sandbox Code Playgroud)
我认为这只是配置问题,但我不确定如何调试我的配置问题。我花了几天时间配置和重新配置我的 Infinispan XML 和 JGroups.xml:
无限跨度:
<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:infinispan:config:6.0"
xsi:schemaLocation="urn:infinispan:config:6.0 http://www.infinispan.org/schemas/infinispan-config-6.0.xsd
urn:infinispan:config:remote:6.0 http://www.infinispan.org/schemas/infinispan-cachestore-remote-config-6.0.xsd"
xmlns:remote="urn:infinispan:config:remote:6.0"
>
<!-- *************************** -->
<!-- System-wide global settings -->
<!-- *************************** -->
<global>
<shutdown hookBehavior="DEFAULT"/>
<transport clusterName="DSLObjectCache">
<properties>
<property name="configurationFile" value="jgroups.xml"/>
</properties>
</transport>
<globalJmxStatistics enabled="false" cacheManagerName="Complex.com"/>
</global>
<namedCache name="ObjectCache">
<transaction transactionMode="TRANSACTIONAL" />
<locking
useLockStriping="false"
/>
<invocationBatching enabled="true"/>
<clustering mode="replication">
<async asyncMarshalling="true" useReplQueue="true" replQueueInterval="100" replQueueMaxElements="100"/>
<stateTransfer fetchInMemoryState="true" />
</clustering>
<eviction strategy="LIRS" maxEntries="500000"/>
<expiration …
Run Code Online (Sandbox Code Playgroud) 在 infinispan 8.2.5.Final 我有一个用例,我想从缓存中逐出/清除所有条目。我正在调用 cache.clear()。Javadoc 说:
void org.infinispan.Cache.clear()
从缓存中删除所有映射。
注意:除非您可以保证不会同时运行其他调用,否则永远不应在生产中调用它。
如果缓存是事务性的,它不会与事务交互。
指定者:map 中的 clear()
这是否意味着“没有其他调用 cache.clear()”?或者它是否意味着“根本没有其他底层缓存调用”?所以不能同时使用 cache.put 和 cache.get 吗?
它是清除缓存的常见用例(新数据进入)。我是否使用了错误的方法?是否有其他方法可以从 infinispan 缓存中逐出所有项目?
编辑:我在失效模式下运行我的缓存。clear() 操作是使所有节点中的所有条目无效还是仅使本地节点中的所有条目无效?
我只是尝试将我的应用程序更新到 Infinspan 10.1.8.Final。我通过以下依赖项使用 Infinispan 作为 2 级休眠 (5.4.18.Final) 缓存build.gradle
:
compile group: 'org.infinispan', name: 'infinispan-hibernate-cache-v53', version: '10.1.8.Final'
Run Code Online (Sandbox Code Playgroud)
应用程序编译并启动,但是当我运行测试套件时会记录以下内容:
warning: unknown enum constant Scopes.GLOBAL
reason: class file for org.infinispan.factories.scopes.Scopes not found
warning: unknown enum constant DataType.TRAIT
reason: class file for org.infinispan.jmx.annotations.DataType not found
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我需要包含另一个依赖项吗?
infinispan ×10
caching ×4
java ×4
jboss ×2
jboss7.x ×2
spring-boot ×2
cassandra ×1
exception ×1
jgroups ×1
spring ×1
spring-cache ×1