Я новичок в веб-сервисе. Я пытаюсь использовать веб-сервис jax.ws..
с jersey
и spring
. Когда я пытаюсь отправить запрос с помощью Chrome Post Client
или CURL
в Windows, происходит следующая трассировка стека.AbstractMethodError in Rest Webservice
SEVERE: Servlet.service() for servlet [jersey-serlvet] in context with path [/rest] threw exception [Servlet execution threw an exception] with root cause
java.lang.AbstractMethodError
at org.codehaus.jackson.map.AnnotationIntrospector$Pair.findDeserializer(AnnotationIntrospector.java:1335)
at org.codehaus.jackson.map.deser.BasicDeserializerFactory.findDeserializerFromAnnotation(BasicDeserializerFactory.java:675)
at org.codehaus.jackson.map.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:535)
at org.codehaus.jackson.map.deser.StdDeserializerProvider._createDeserializer(StdDeserializerProvider.java:432)
at org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCache2(StdDeserializerProvider.java:341)
at org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCacheValueDeserializer(StdDeserializerProvider.java:321)
at org.codehaus.jackson.map.deser.StdDeserializerProvider.findValueDeserializer(StdDeserializerProvider.java:167)
at org.codehaus.jackson.map.deser.StdDeserializerProvider.findTypedValueDeserializer(StdDeserializerProvider.java:188)
at org.codehaus.jackson.map.ObjectMapper._findRootDeserializer(ObjectMapper.java:2820)
at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2690)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1308)
at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:419)
..............................
Ниже приводится код моего примера:
@Path("/loginPoint")
@Service
public class UserService {
@Resource(name= "commanUserService")
private CommanUserService commanUserService;
@POST
@Path("/login")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response login(LoginRequest request){
System.out.println("Hello In web Services >>>>>>>>>>>>>>>>>>>>>>>>> ");
LoginResponse response = commanUserService.getUserloginInformation(request);
return Response.status(Status.OK).entity(response).build();
}
}
код LoginRequest.java файла:
@XmlRootElement(name="loginRequest")
public class LoginRequest {
private String userName;
private String password;
@XmlElement("userName")
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@XmlElement("password")
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Я полагаю, что проблема заключается в выстраивании JSON
параметров запроса с LoginRequest
объектом, но я не уверен.
AbstractMethodError часто указывает на несоответствие версии. У вас есть несколько банок Джексона? Можете ли вы открыть источник этого последнего вызова в стеке и посмотреть, что он будет вызывать? – Pace
да, у меня есть несколько банок Jackson в моем проекте с разными версиями. но теперь я путаю, какую зависимость мне нужно удалить? –
Если вы используете Maven, иногда помогает зависание: плагин дерева. Раздел [dependencyManagement] (http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Management) также позволит вам указать одну версию, которая переопределит все транзитивные зависимости. – Pace