Hi.
I'm using the localtransport to do integration testing of my JAX-RS
resources.
I setup the server like this:
private <T> void setupResource( T resource )
{
try
{
PropertyUtils.setProperty( resource, "contextHolder", contextHolder );
}
catch ( Exception e ) {
logger.warn( "No property for setting contextHolder", e );
}
JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
List<Object> providers = new ArrayList<>();
providers.add( new JacksonJaxbJsonProvider() );
providers.add( new ServiceExceptionMapper() );
//providers.add( new ContextHolder() ); //?
sf.setProviders( providers );
sf.setResourceClasses( resource.getClass() );
sf.setResourceProvider( resource.getClass(),
new SingletonResourceProvider( resource, true ));
sf.setAddress( ENDPOINT_ADDRESS );
server = sf.create();
}
And get my client like this:
protected <T> T getClientProxy( Class<T> resourceClass ) {
T client = JAXRSClientFactory.create( ENDPOINT_ADDRESS,resourceClass );
WebClient.getConfig( client )
.getRequestContext().put( LocalConduit.DIRECT_DISPATCH, Boolean.TRUE);
return client;
}
Invocation is OK on the server side, but when it's about to marshal
the response it says:
No message body reader has been found for class <myPojo>, ContentType:
application/json
even though I've set the JacksonJaxbJsonProvider in the provider list.
When running a standalone server in a servlet-container it works just
fine. What am I missing?
--
--
David J. M. Karlsen - http://www.linkedin.com/in/davidkarlsen