3

I'm trying to run integration tests for my web application. So I want to start Tomcat 8 from a JUnit Test case.

@RunWith(Arquillian.class)
public class ServiceTest {

    @ArquillianResource
    private URL baseURL;


    /**
     * Define the deployment
     */
    @Deployment(testable=false)
    public static WebArchive createTestArchive() {

        File[] files = Maven.configureResolver().workOffline()
                .loadPomFromFile("pom.xml")
                .resolve("org.glassfish.jersey.containers:jersey-container-servlet-core",
                        "org.jboss.weld.servlet:weld-servlet",
                        "org.glassfish.jersey.containers.glassfish:jersey-gf-cdi")
                .withTransitivity()
                .asFile();

        WebArchive webArchive = ShrinkWrap
                .create(WebArchive.class, "api.war")
                .addClass(de.example.service.servlet.ServletContextInitalizer.class)
                .addClass(de.example.service.rest.PolygonService.class)
                ...
                .addAsLibraries(files);

        return webArchive;
    }

My pom.xml file can be found here. I can see that my ServletContextListener implementation is called correctly but after loading the Listener I get a ClassCastException:

java.lang.ClassCastException: org.glassfish.jersey.server.filter.internal.    ServerFiltersAutoDiscoverable cannot be cast to org.glassfish.jersey.internal.spi.AutoDiscoverable
    at org.glassfish.jersey.model.internal.CommonConfig.configureAutoDiscoverableProviders(    CommonConfig.java:583)
    at org.glassfish.jersey.server.ResourceConfig.configureAutoDiscoverableProviders(    ResourceConfig.java:791)
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:381)
    at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:162)
    at org.glassfish.jersey.server.ApplicationHandler$3.run(ApplicationHandler.java:322)
    at org.glassfish.jersey.internal.Errors$2.call(Errors.java:289)
    at org.glassfish.jersey.internal.Errors$2.call(Errors.java:286)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:286)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:319)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:284)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:168)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358)
    at javax.servlet.GenericServlet.init(GenericServlet.java:244)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1241)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1044)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4922)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5204)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:697)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:919)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1704)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Any help is kindly appreciated!

Cheers, Daniel

Daniel Gerber
  • 3,226
  • 3
  • 25
  • 32
  • Is there a demo on how to use tomcat 8 with arquillian somewhere? – Daniel Gerber Oct 16 '14 at 15:47
  • I had the same exception, but for JacksonFeature. Finally solved it by disabling auto-discovery (set jersey.config.server.disableAutoDiscovery to true) and using [META-INF/services scanning](https://jersey.java.net/documentation/latest/deployment.html#deployment.classpath-scanning) – Eugene Mar 05 '16 at 06:56

0 Answers0