2015-01-14 6 views
6

के साथ आराम-सेवा में पैरामीटर के लिए कोई इंजेक्शन स्रोत नहीं मिला है, मुझे समस्या है, कि मेरी बाकी सेवा के दो तरीके तैनाती पर त्रुटि लाते हैं, कि कोई इंजेक्शन स्रोत नहीं है।जैक्सर्स

मेरी सेवा इस तरह दिखता है:

@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(); 
} 

कक्षा समस्या whith निम्नलिखित है:

@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; 
} 
} 

और निम्न त्रुटि मैं मिलता है:

[[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=[]}']]] 

कर सकते हैं आप मुझे बताओ कि इस कक्षा में क्या समस्या है। मुझे यह भी समझ में नहीं आता है, sendMessage() विधि क्यों एक ही समस्या नहीं लाती है।

+0

आप किस JSON प्रदाता का उपयोग कर रहे हैं? –

उत्तर

20

मुझे पता चला कि समस्या यह थी कि मैंने गलत @PathParam एनोटेशन आयात किया था।

+1

ग्रहण 'javax.websocket.server.PathParam'' javax.ws.rs.PathParam' से पहले सुझाता है ... लेकिन दूसरे को चुना जाना है। –

+0

अपना उत्तर पोस्ट करने के लिए धन्यवाद। मैं आपको बता नहीं सकता कि मैं कितना समय बर्बाद कर रहा था, हाहा – user489041

2

प्रश्न/स्वीकृत उत्तर में थोड़ा और संदर्भ जोड़ने के लिए यह उत्तर जोड़ना।

Daniel Müssig के रूप में उनके उत्तर में वर्णित, मैंने भी गलत @ पाथपारा एनोटेशन का उपयोग किया (मैं javax.websocket.server से एक का उपयोग कर रहा था, लेकिन जाहिर है यह javax.ws.rs से एक होना चाहिए)।

यहां कुछ और त्रुटि संदेश हैं जो मैं भाग गया, जो उम्मीद है कि वहां कुछ googlers की मदद कर सकते हैं!

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]