2012-06-12 10 views
5

私は私のアプリの中に休憩サービスをhavaと私は春の豆を使用したいと思います。 春私はバージョン2.5を使用しています。 web.xmlファイルの パート:ジャージーRESTサービスSpringコンポーネントとして

のpom.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> 

私が持っている依存関係:私が追加したのcontext.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:component-scan base-package="com.app.rest"/> 

と:

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

興味深い部分もし(validator.validate(DTO)== 200):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メソッドは、(basiclyそれは:)作品)動作しますが、POSTメソッドは、ライン上にNullPointerExceptionがスローされます。

なぜ@Autowiredアノテーションがここで動作しないのか分かりませんが、エールは@Resourceを試してみました - 同じ効果。

ヒントが役立ちます。

ありがとうございます。 マレック。

答えて

3

SpringでJerseyを使用する場合は、Spring統合モジュールを使用する必要があります。つまり、Jersey-Springに依存し、Jersey ServletContainerサーブレットクラスの代わりにSpringServletを使用する必要があります。詳細はこちらをご覧ください:http://jersey.java.net/nonav/apidocs/latest/contribs/jersey-spring/com/sun/jersey/spi/spring/container/servlet/package-summary.html

+0

に別のクラスを追加する必要があるので、よく病気にこの依存関係に春のexludesを追加し、うまくいけば、それはウィル私は仕事:) – Marek

0

あなたはorg.springframework.validation.Validatorインタフェースを実装した場合、あなたは検証方法は、2つのパラメータを期待されるはずです、それはタイプのオブジェクトとタイプでありますエラーは、あなたが私はジャージスプリングなしでそれを行うことができます望んであなたの検証コール

BeanPropertyBindingResult v = new BeanPropertyBindingResult(dto,"Errors"); 
validator.validate(dto, v); 
関連する問題