Tob*_*now 1 dependency-injection exception infinispan jboss-arquillian jboss7.x
信息:我的应用程序是一个简单的 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, Filters.exclude(".*ClientServerTest.*"), "com/company")
.addAsLibraries(mvnResolver.artifact("org.infinispan:infinispan-core:5.2.0.Final").resolveAsFiles())
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
}
@Test
public void testStatus() throws Exception {
ClientRequest request = new ClientRequest("localhost:8080/cache-service/cache");
request.accept(MediaType.APPLICATION_JSON_TYPE);
request.body(MediaType.APPLICATION_JSON_TYPE, "");
ClientResponse<String> responseObj = request.post(String.class);
assertEquals(200, responseObj.getStatus());
}
}
Run Code Online (Sandbox Code Playgroud)
题
总而言之,我想使用 Arquilian 进行客户端测试,因为我使用了很多依赖注入,也许那里有一个使用 @Resource 和 Infinispan 的示例项目。
在所有答案之后,我得到了答案,我只想为其他寻找相同问题的人总结一下。
.addAsLibraries(mvnResolver.artifact("org.infinispan:infinispan-core:5.2.0.Final").resolveAsFiles())MANIFEST.MF文件src/test/resourceDependencies: org.infinispan export.addAsManifestResource("MANIFEST.MF")到 ShrinkWrap将以下内容添加到 JBoss 中的 standalone.xml/domain.xml 配置文件中:
<subsystem xmlns="urn:jboss:domain:ee:1.0">
<global-modules>
<module name="org.infinispan" slot="main"/>
</global-modules>
</subsystem>
Run Code Online (Sandbox Code Playgroud)