У меня странная проблема.Всякий раз, когда я заново запускаю сервер (Payara) и запускаю свое приложение, оно работает как положено.Это может даже работать в другой раз.Но тогда он просто выдает ResponseProcessingException
.
Когда я перезагружаю сервер, он работает еще 1-2 раза.
StackTrace :
javax.ws.rs.client.ResponseProcessingException: Unexpected error during response processing.
at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:881)
[...] // more ...
at fish.payara.requesttracing.jaxrs.client.decorators.JaxrsInvocationBuilderDecorator.get(JaxrsInvocationBuilderDecorator.java:195)
at com.classes.MyClass.myFunc(MyClass.java:10)
[...] // more ...
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.yasson.internal.model.SetWithSetter.internalSetValue(SetWithSetter.java:27)
at org.eclipse.yasson.internal.model.SetValueCommand.setValue(SetValueCommand.java:26)
at org.eclipse.yasson.internal.model.ReflectionPropagation.setValue(ReflectionPropagation.java:67)
at org.eclipse.yasson.internal.model.PropertyModel.setValue(PropertyModel.java:295)
at org.eclipse.yasson.internal.serializer.ObjectDeserializer.lambda$getInstance$0(ObjectDeserializer.java:102)
at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
[...] // more ...
Согласно этому StackTrace, исключение вызывается 10-й строкой функции myFunc
в классе MyClass
.
com.classes.MyClass.myFunc:
SomeObject myFunc(String str) {
return ClientBuilder.newClient()
.target(str)
.request(MediaType.APPLICATION_JSON) // this line
.get(SomeObject.class);
}
Как мне кажется, на первый взгляд, мой код правильный.Значит, с сервером что-то не так?
Я использую Payara 5 на Netbeans 8.2.Я также пробовал GlassFish 5.
Обновление 1:
SomeObject.class
import java.time.LocalDate;
import java.time.LocalDateTime;
import javax.json.bind.annotation.JsonbDateFormat;
import static javax.json.bind.annotation.JsonbDateFormat.DEFAULT_FORMAT;
import javax.json.bind.annotation.JsonbTypeDeserializer;
public class SomeObject {
private int num1;
@JsonbTypeDeserializer(AnotherClassDeserializer.class)
private AnotherClass anotherClass;
@JsonbDateFormat(locale = DEFAULT_FORMAT)
private LocalDateTime date1;
@JsonbDateFormat(value = "yyyy-MM-dd")
private LocalDate date2;
@JsonbDateFormat(value = "yyyy-MM-dd")
private LocalDate date3;
private Boolean yesNo;
private int num2;
private int num3;
// constructor
// default constructor
// getter & setter
}
Обновление 2:
str
- это URL-адрес в форме: http://someUrl.com/rest/id/123
@JsonbDateFormat(locale = DEFAULT_FORMAT)
совпадает с @JsonbDateFormat(value = "yyyy-MM-ddTHH:mm:ss")
.Вроде разбирается без нареканий.