2012-06-12 15 views
5

के रूप में जर्सी आरईएसटी सेवा मैं अपने ऐप के अंदर एक बाकी सेवा प्रदान करता हूं और मैं इसे वसंत सेम का उपयोग करना चाहता हूं। मैं जिस स्प्रिंग का उपयोग कर रहा हूं वह संस्करण 2.5 है। web.xml की भाग:वसंत घटक

निर्भरता
<servlet> 
    <servlet-name>jersey-servlet</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.app.rest</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>jersey-servlet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

pom.xml में मेरे पास है:

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-server</artifactId> 
    <version>1.8</version> 
</dependency> 
<dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-json</artifactId> 
     <version>1.8</version> 
</dependency> 

context.xml में मैं जोड़ लिया है:

<context:component-scan base-package="com.app.rest"/> 

और यह भी:

<tx:annotation-driven proxy-target-class="true" /> 

से दिलचस्प हिस्सा rvice वर्ग:

@Component 
@Path("/notification") 
@Scope("singleton") 
public class PushNotification { 

    @Autowired 
    //@Resource(name = "sendMessageServiceFacade") 
    private SendMessageServiceFacade sendMessageServiceFacade; 

    @Autowired 
    //@Resource(name = "responseCode") 
    private NotificationResponseMessage responseCode; 

    @Autowired 
    //@Resource(name = "validator") 
    private PushMessagePreValidator validator; 

    @POST 
    @Path("/register") 
    @Consumes(MediaType.APPLICATION_JSON) 
    public Response registerDevice(PushWooshRegisterDeviceDto dto) { 
     if (validator.validate(dto) == 200) { 
      return invokePushMessage(dto, PushMessageType.REGISTER.getMsgType()); 
     } else { 
      return buildFailResponse(); 
     } 
    } 

    @GET 
    @Path("/{param}") 
    public Response ping(@PathParam("param") String param) { 
     return Response.status(200).entity(param).build(); 
    } 

GET पद्धति की उम्मीद के रूप में काम (मूल रूप से यह काम करता है :)), लेकिन POST पद्धति लाइन पर NullPointerException फेंकता है: अगर (validator.validate (डीटीओ) == 200)।

मुझे नहीं पता कि @Autowired एनोटेशन यहां क्यों काम नहीं करता है, एले मैंने @ संसाधन के साथ प्रयास किया - एक ही प्रभाव।

कोई भी सुझाव मदद कर सकता है।

अग्रिम धन्यवाद, मरेक।

उत्तर

3

यदि आप वसंत के साथ जर्सी का उपयोग करना चाहते हैं, तो आपको वसंत एकीकरण मॉड्यूल का उपयोग करने की आवश्यकता है - यानी जर्सी-वसंत पर निर्भर है और जर्सी सर्वलेटकॉन्टेनर सर्वलेट कक्षा के बजाय स्प्रिंगसेर्लेट का उपयोग करें। अधिक जानकारी के लिए देखें: http://jersey.java.net/nonav/apidocs/latest/contribs/jersey-spring/com/sun/jersey/spi/spring/container/servlet/package-summary.html

+0

मैं मैं बिना जर्सी-वसंत यह कर सकते हैं आशा व्यक्त की, अच्छी तरह से बीमार यह निर्भरता में वसंत पर exludes जोड़ने के लिए एक और वर्ग जोड़ने की जरूरत है उम्मीद है कि यह wil एल काम :) – Marek

0

आप org.springframework.validation.Validator इंटरफ़ेस कार्यान्वित हैं, तो आप देखना चाहिए सत्यापित करें विधि दो पैरामीटर की उम्मीद, उस प्रकार वस्तु की है और के प्रकार त्रुटियाँ, ताकि आप और आपके सत्यापित करें कॉल

BeanPropertyBindingResult v = new BeanPropertyBindingResult(dto,"Errors"); 
validator.validate(dto, v);