Исключение нулевого указателя клиента CXF JAX-RS - PullRequest
0 голосов
/ 09 июня 2011

Я пытаюсь использовать найденный код 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    -

Я озадачен тем, что может быть причиной этого. Я подумал, может быть, я пропустил зависимость, поэтому я вернулся и проверил это и добавил еще пару. Я подумал, может быть, я что-то упустил в документации, но я ничего не вижу.

Я что-то упускаю из виду? Кто-нибудь знает, как заставить это работать?

Спасибо.

1 Ответ

1 голос
/ 10 июня 2011

Проблема была не в CXF. Проблема заключалась в том, что на моем пути было расширение рестлета JAX-RS. Добавив следующее в мой pom:

        <exclusions>
            <exclusion>
                <artifactId>org.restlet</artifactId>
                <groupId>org.restlet</groupId>
            </exclusion>
            <exclusion>
                <artifactId>org.restlet.ext.xstream</artifactId>
                <groupId>org.restlet.jse</groupId>
            </exclusion>
            <exclusion>
                <artifactId>org.restlet.ext.jaxrs</artifactId>
                <groupId>org.restlet.jse</groupId>
            </exclusion>
            <exclusion>
                <artifactId>org.restlet.ext.slf4j</artifactId>
                <groupId>org.restlet.jse</groupId>
            </exclusion>
            <exclusion>
                <artifactId>org.restlet</artifactId>
                <groupId>org.restlet.jse</groupId>
            </exclusion>
        </exclusions>

Исправлено для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...