Hi,

In my JUnit tests I have two Spring-based tests that declare JAX-RS providers (on different local ports) like:

<bean id="jsonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider">
    </bean>
<bean id="securityExceptionMapper" class="uk.co.spudsoft.spiderweborders.process.security.SecurityExceptionMapper" /> <bean id="htmlProvider" class="uk.co.spudsoft.spiderweborders.api.service.HtmlProvider" >
        <property name="htmlContentResource" value="/resource.html" />
    </bean>
<bean id="illegalArgumentExceptionMapper" class="uk.co.spudsoft.spiderweborders.api.service.IllegalArgumentExceptionMapper" /> <bean id="catchAllExceptionMapper" class="uk.co.spudsoft.spiderweborders.api.service.CatchAllExceptionMapper" />

<bean id="exceptionResource" class="uk.co.spudsoft.test.rest.ExceptionResource" />

    <jaxrs:server id="restServer" address="http://0.0.0.0:9281/rest/"; >
        <jaxrs:serviceBeans>
            ...
        </jaxrs:serviceBeans>
        <jaxrs:providers>
            <ref bean="htmlProvider" />
            <ref bean="jsonProvider" />
<bean class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider" />
            <ref bean="securityExceptionMapper" />
            <ref bean="illegalArgumentExceptionMapper" />
            <ref bean="catchAllExceptionMapper" />
        </jaxrs:providers>
    </jaxrs:server>

The tests both work when run independently, but when I run them both together (which will mean Spring keeps the contexts around after the test finishes) I get this error: 08:58:12.285 [qtp842577946-28] ERROR u.c.s.s.a.s.CatchAllExceptionMapper - Exception caught:
java.lang.NullPointerException: null
at org.apache.cxf.jaxrs.impl.tl.ThreadLocalProviders.getContextResolver(ThreadLocalProviders.java:50) ~[cxf-rt-frontend-jaxrs-2.7.7.jar:2.7.7] at com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider._locateMapperViaProvider(JacksonJsonProvider.java:203) ~[jackson-jaxrs-json-provider-2.3.0.jar:2.3.0] at com.fasterxml.jackson.jaxrs.base.ProviderBase.locateMapper(ProviderBase.java:817) ~[jackson-jaxrs-base-2.3.0.jar:2.3.0] at com.fasterxml.jackson.jaxrs.base.ProviderBase.writeTo(ProviderBase.java:563) ~[jackson-jaxrs-base-2.3.0.jar:2.3.0] at org.apache.cxf.jaxrs.utils.JAXRSUtils.writeMessageBody(JAXRSUtils.java:1317) ~[cxf-rt-frontend-jaxrs-2.7.7.jar:2.7.7] at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.serializeMessage(JAXRSOutInterceptor.java:282) [cxf-rt-frontend-jaxrs-2.7.7.jar:2.7.7] at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.processResponse(JAXRSOutInterceptor.java:155) [cxf-rt-frontend-jaxrs-2.7.7.jar:2.7.7] at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.handleMessage(JAXRSOutInterceptor.java:86) [cxf-rt-frontend-jaxrs-2.7.7.jar:2.7.7] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) [cxf-api-2.7.7.jar:2.7.7] at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:77) [cxf-api-2.7.7.jar:2.7.7] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) [cxf-api-2.7.7.jar:2.7.7] at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [cxf-api-2.7.7.jar:2.7.7] at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:355) [cxf-rt-transports-http-jetty-2.7.7.jar:2.7.7] at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:319) [cxf-rt-transports-http-jetty-2.7.7.jar:2.7.7] at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:72) [cxf-rt-transports-http-jetty-2.7.7.jar:2.7.7] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) [jetty-server-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) [jetty-server-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:195) [jetty-server-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) [jetty-server-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) [jetty-server-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) [jetty-server-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) [jetty-server-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) [jetty-server-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.server.Server.handle(Server.java:370) [jetty-server-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) [jetty-server-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949) [jetty-server-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011) [jetty-server-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644) [jetty-http-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) [jetty-http-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) [jetty-server-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668) [jetty-io-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) [jetty-io-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) [jetty-util-8.1.12.v20130726.jar:8.1.12.v20130726] at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) [jetty-util-8.1.12.v20130726.jar:8.1.12.v20130726]
    at java.lang.Thread.run(Thread.java:724) [na:1.7.0_40]

Can anyone shed any light on this?

I can't use "@DirtiesContext" after all of my tests because it would take too long to build the contexts, but I'm quite happy to change my config if that'll get rid of the problem.

Thanks

Jim

Reply via email to