Getting SLF4J error while trying to run RestEasy in Aquillian test
dspiess Nov 6, 2012 6:25 PMHi,
I'm trying to write a simple test, but I can't seem to get the setup right.
I'm trying to deploy and run the test on JBoss AS7.
Here's what I have in my test. It fails when I try to initialize the Resteasy client. If I comment out the RegisterBuiltin line, the test runs as long as I comment out the rest of the Resteasy calls.
@RunWith(Arquillian.class)
public class TypeTypeHandlerTest extends DeploymentTest {
private static Logger logger = Logger.getLogger(TypeTypeHandlerTest.class);
@ArquillianResource
URL deploymentUrl;
public static void initResteasyClient() {
//the following only needs to be executed once per VM
RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
}
@Deployment
public static Archive<?> getDeployment() {
return createDeploymentArchive();
}
@BeforeClass
public static void setup() {
initResteasyClient();
}
@Test
public void shouldBeAbleToListAllTypeTypes(ClientResponse<TypeTypeList> response) {
//TypeTypeService client = ProxyFactory.create(TypeTypeService.class, "http://localhost:8080/testCDS");
//ClientResponse<TypeTypeList> clientResponse = client.getTypeTypeList();
assertEquals("Didn't get a response.", true, response != null);
//TypeTypeList list = clientResponse.getEntity(new GenericType<TypeTypeList>() {});
assertEquals("Return status was not ok", 200, response.getStatus());
//assertEquals("Didnt get a type type list", true, list != null);
}
}
This is where I set up the deployment. I've tried adding SLF4J and removing it.
/**
* Creates a deployment which can be tested on JBoss
* @return the deployment which is sent to JBoss for testing
*/
public static Archive<?> createDeploymentArchive() {
if (theArchive == null) {
logger.debug("BUILDING MVN dependencies");
MavenDependencyResolver resolver = DependencyResolvers
.use(MavenDependencyResolver.class)
.goOffline();
logger.debug("CREATING Archive");
theArchive = ShrinkWrap.create(WebArchive.class, "testCDS.war")
.addPackages(true, "org.neoninc.cds.pdr")
.addClass("org.neoninc.cds.RestApplication")
.addAsLibraries(resolver.artifact("org.neoninc:cdsResources:1.0-SNAPSHOT").resolveAsFiles())
.addAsLibraries(resolver.artifact("com.oracle:ojdbc6:11.2.0.3").resolveAsFiles())
.addAsLibraries(resolver.artifact("org.hibernatespatial:hibernate-spatial-oracle:1.0").resolveAsFiles())
.addAsLibraries(resolver.artifact("com.oracle:sdoapi:11.2.0.2").resolveAsFiles())
.addAsLibraries(resolver.artifact("commons-codec:commons-codec:1.6").resolveAsFiles())
.addAsLibraries(resolver.artifact("commons-io:commons-io:2.4").resolveAsFiles())
.addAsLibraries(resolver.artifact("org.infinispan:infinispan-core:5.1.5.FINAL").resolveAsFiles())
.addAsLibraries(resolver.artifact("org.jboss.resteasy:resteasy-jaxrs:2.3.4.Final").resolveAsFiles())
//.addAsLibraries(resolver.artifact("org.slf4j:slf4j-log4j12:1.6.4").resolveAsFiles())
.addAsManifestResource("test-jboss-deployment-structure.xml","jboss-deployment-structure.xml")
.addAsResource("META-INF/persistence.xml", "META-INF/persistence.xml")
.addAsResource("log4j.xml", "log4j.xml")
.addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"));
//.addAsLibraries(mvnLibs);
logger.debug(theArchive.toString());
}
return theArchive;
}
This is the exception I'm getting.
java.lang.ExceptionInInitializerError at org.jboss.resteasy.spi.ResteasyProviderFactory.getInstance(ResteasyProviderFactory.java:352) at org.neoninc.cds.pdr.rest.TypeTypeHandlerTest.initResteasyClient(TypeTypeHandlerTest.java:35) at org.neoninc.cds.pdr.rest.TypeTypeHandlerTest.setup(TypeTypeHandlerTest.java:45) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27) at org.jboss.arquillian.junit.Arquillian$StatementLifecycleExecutor.invoke(Arquillian.java:351) at org.jboss.arquillian.container.test.impl.execution.ClientBeforeAfterLifecycleEventExecuter.execute(ClientBeforeAfterLifecycleEventExecuter.java:99) at org.jboss.arquillian.container.test.impl.execution.ClientBeforeAfterLifecycleEventExecuter.on(ClientBeforeAfterLifecycleEventExecuter.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99) at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81) at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:75) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88) at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88) at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:134) at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:114) at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.beforeClass(EventTestRunnerAdaptor.java:80) at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:182) at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:314) at org.jboss.arquillian.junit.Arquillian.access$100(Arquillian.java:46) at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:199) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:147) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at org.jboss.resteasy.logging.Logger.getLogger(Logger.java:104) at org.jboss.resteasy.plugins.providers.RegisterBuiltin.<clinit>(RegisterBuiltin.java:21) ... 50 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at org.jboss.resteasy.logging.Logger.getLogger(Logger.java:92) ... 51 more Caused by: java.lang.IllegalStateException: org.slf4j.LoggerFactory could not be successfully initialized. See also http://www.slf4j.org/codes.html#unsuccessfulInit at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:276) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:242) at org.jboss.resteasy.logging.impl.Slf4jLogger.<init>(Slf4jLogger.java:19) ... 56 more
Any ideas where I'm going wrong?
Thanks!