Tengo el problema, que los dos métodos de mi servicio rest traer el error de implementar, que no hay inyección de origen.

Mi Servicio se parece a esto:

@Path("/chatservice")
public class ChatServiceImpl implements ChatService{

@POST
@Path("/registerToServer")
@Consumes(MediaType.APPLICATION_JSON)
@Override
public Response registerToServer(User user) {

    UserList userListObject = getAllChatableUsers(user);

    return Response.status(200).entity(userListObject).build();
}

@POST
@Path("/sendMessage")
@Consumes(MediaType.APPLICATION_JSON)
@Override
public Response sendMessage(Message message) {
    boolean isSuccess = putMessageIntoDatabase(message);

    return Response.status(200).build();
}

@POST
@Path("/getAllMessagesForUser")
@Consumes(MediaType.APPLICATION_JSON)
@Override
public Response getAllMessagesForUser(UserWithRecipient userWithRecipient) {

    return Response.status(200).build();
}

@POST
@Path("/getAllMessagesForUser/{numberOfMessages}")
@Consumes(MediaType.APPLICATION_JSON)
@Override
public Response getMessagesForUser(@PathParam("numberOfMessages") int numberOfMessages, UserWithRecipient userWithRecipient) {

    return Response.status(200).build();
}

La Clase con el Problema es el siguiente:

@XmlSeeAlso(User.class)
@XmlRootElement
public class UserWithRecipient {

private User user;
private User recipient;

public UserWithRecipient() {
}

public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}

public User getRecipient() {
    return recipient;
}

public void setRecipient(User recipient) {
    this.recipient = recipient;
}
}

Y el error que me sale es el siguiente:

 [[FATAL] No injection source found for a parameter of type public javax.ws.rs.core.Response de.hszg.fei.ws.service.ChatServiceImpl.getMessagesForUser(int,de.hszg.fei.ws.model.UserWithRecipient) at index 0.; source='ResourceMethod{httpMethod=POST, consumedTypes=[application/json], producedTypes=[], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class de.hszg.fei.ws.service.ChatServiceImpl, handlerConstructors=[[email protected]]}, definitionMethod=public javax.ws.rs.core.Response de.hszg.fei.ws.service.ChatServiceImpl.getMessagesForUser(int,de.hszg.fei.ws.model.UserWithRecipient), parameters=[Parameter [type=int, source=numberOfMessages, defaultValue=null], Parameter [type=class de.hszg.fei.ws.model.UserWithRecipient, source=null, defaultValue=null]], responseType=class javax.ws.rs.core.Response}, nameBindings=[]}']]]

Me puede decir cual es el problema con esta clase. Yo tampoco entiendo, ¿por qué la sendMessage() método no trae el mismo problema.

Lo JSON proveedor estás usando?

OriginalEl autor Daniel Müssig | 2015-01-14

3 Comentarios

  1. 22

    Descubrí que el problema era, que he importado el mal @PathParam Anotación.

    Eclipse sugiere javax.websocket.server.PathParam antes de javax.ws.rs.PathParam … pero el segundo ha de ser elegido.

    OriginalEl autor Daniel Müssig

  2. 2

    La adición de esta respuesta para agregar un poco más de contexto a la pregunta /aceptado respuesta.

    Como Daniel Müssig describe en su respuesta, yo también utiliza la mal @PathParam anotación (yo estaba usando el de javax.websocket.servidor, pero, obviamente, debe ser la de javax.ws.rs).

    Aquí algunos mensajes de error que me encontré, que esperemos que podría ayudar a algunos empleados por ahí!

    org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
    [[FATAL] No injection source found for a parameter of type [... more specific method data on this line]
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:553) ~[jersey-server-2.21.jar:na]
    at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:182) ~[jersey-server-2.21.jar:na]
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:348) ~[jersey-server-2.21.jar:na]
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:345) ~[jersey-server-2.21.jar:na]
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) ~[jersey-common-2.21.jar:na]
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) ~[jersey-common-2.21.jar:na]
    at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255) ~[jersey-common-2.21.jar:na]
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:345) ~[jersey-server-2.21.jar:na]
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:390) ~[jersey-container-servlet-core-2.21.jar:na]

    OriginalEl autor Erik Zivkovic

Dejar respuesta

Please enter your comment!
Please enter your name here