Я пытаюсь использовать найденный код API клиента Apache CXF JAX-RS здесь . Однако, когда я запускаю клиент, он выдает следующее:
Exception in thread "main" java.lang.NullPointerException
at java.util.HashMap.<init>(HashMap.java:223)
at org.restlet.ext.jaxrs.internal.core.ResponseBuilderImpl.clone(ResponseBuilderImpl.java:126)
at org.restlet.ext.jaxrs.internal.core.ResponseBuilderImpl.clone(ResponseBuilderImpl.java:62)
at org.apache.cxf.jaxrs.client.AbstractClient.setResponseBuilder(AbstractClient.java:374)
at org.apache.cxf.jaxrs.client.ClientProxyImpl.handleResponse(ClientProxyImpl.java:451)
at org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedInvocation(ClientProxyImpl.java:445)
at org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:177)
at $Proxy12.foo(Unknown Source)
at com.paml.JaxTestClient.main(JaxTestClient.java:20)
Вот мой клиент:
public class JaxTestClient {
public static void main( String[] args ) {
// Works with Restlet API - but paths are not mapped automatically
// JaxExampleEcho jaxExampleEcho = ClientResource.create( "http://localhost:8111/", JaxExampleEcho.class );
JaxExampleEcho jaxExampleEcho = JAXRSClientFactory.create( "http://localhost:8111/", JaxExampleEcho.class );
System.out.println( jaxExampleEcho.foo() );
System.out.println( jaxExampleEcho.bar() );
System.out.println( jaxExampleEcho.baz() );
}
}
А вот и интерфейс:
@Path( "/" )
public interface JaxExampleEcho {
@GET
@Path( "foo" )
@Produces( "text/plain" )
String foo();
@GET
@Path( "bar" )
@Produces( "text/plain" )
String bar();
@GET
@Path( "baz" )
@Produces( "text/plain" )
String baz();
}
Когда я запускаю его в браузере с правильными URL-адресами, он работает нормально, и фактически я вижу правильные запросы на стороне сервера:
Jun 9, 2011 11:06:03 AM org.restlet.engine.log.LogFilter afterHandle
INFO: 2011-06-09 11:06:03 127.0.0.1 - - 8111 GET /foo - 200 3 0 1 http://localhost:8111 Apache CXF 2.4.0 -
Я озадачен тем, что может быть причиной этого. Я подумал, может быть, я пропустил зависимость, поэтому я вернулся и проверил это и добавил еще пару. Я подумал, может быть, я что-то упустил в документации, но я ничего не вижу.
Я что-то упускаю из виду? Кто-нибудь знает, как заставить это работать?
Спасибо.