Как получить журналы свитера в сервере?

Я использую свитер для WS REST. Как я включаю журналы свитера в стороне сервера?

Длинная история: Я получаю клиентское исключение - но я ничего не вижу в журналах кота [Оно даже не достигает моего метода]. Так как отслеживание стека говорит "toReturnValue", это действительно получало что-то от сервера. Но я не знаю что сказанный сервер.

Exception in thread "main" java.lang.IllegalArgumentException: source parameter must not be null
 at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:98)
        at com.sun.xml.internal.ws.message.AbstractMessageImpl.readPayloadAsJAXB(AbstractMessageImpl.java:100)
        **at com.sun.xml.internal.ws.client.dispatch.JAXBDispatch.toReturnValue(JAXBDispatch.java:74)**
        at com.sun.xml.internal.ws.client.dispatch.DispatchImpl.doInvoke(DispatchImpl.java:191)
        at com.sun.xml.internal.ws.client.dispatch.DispatchImpl.invoke(DispatchImpl.java:195)
39
задан SANN3 19 September 2014 в 04:59
поделиться

2 ответа

Если вы хотите включить ведение журнала на стороне сервера, вам необходимо зарегистрировать фильтр LoggingFilter Jersey (на стороне контейнера).

Этот фильтр регистрирует заголовки запросов / ответов и объекты .

Вот что вам нужно добавить в ваш класс ResourceConfig :

@ApplicationPath("/")
public class MyApplication extends ResourceConfig {

    public MyApplication() {
        // Resources.
        packages(MyResource.class.getPackage().getName());

        register(LoggingFilter.class);    
    }
}

Обратите внимание, что тот же фильтр работает и на стороне клиента.

Client client = Client.create();
client.addFilter(new LoggingFilter());
59
ответ дан 27 November 2019 в 02:15
поделиться

Не могли бы вы показать нам свой клиентский код и также рассказать нам о запросе?

Это исключение, похоже, указывает на шаг демаршалинга JAXB.По-видимому, вы получили некоторый XML из своего REST API, но вы не получаете того, чего ждете.

Возможно, XSD, который вы используете для маршалинга / демаршалинга, устарел или просто неверен.
Может быть, вы пытаетесь понять не ту сущность из ответа.

Попробуйте выполнить следующие действия и расскажите подробнее о своей проблеме:

Получите XML из ответа

Используя REST-клиент, например Client REST simple (расширение Chrome), или ваш код:

Builder builder = webResource.path("/yourapi/").accept("application/xml");

// get the client response
ClientResponse response = builder.get(ClientResponse.class);

// log the HTTP Status
logger.log("HTTP Status: " + response.getStatus());

// bypass the jaxb step and get the full response
// MyResource myResource = response.getEntity(MyResource.class);
String myResource = response.getEntity(String.class);
logger.log(myResource);

Проверьте этот XML с помощью XSD, который вы используете

Этот тест должен завершиться неудачно (если я прав).

3
ответ дан 27 November 2019 в 02:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: