2013-01-11 18 views
9

Tôi có điểm cuối Jax-rs được triển khai trong kho lưu trữ WAR trên JBoss 7.1.1. Trong phản hồi JSON của tôi, tôi không muốn tên trường null của mình được bao gồm, vì vậy tôi đặt @JsonSerialize trên đó.Jackson @JsonSerialize bị bỏ qua trong Jboss 7.1.1 nếu maven dependecy được thiết lập để cung cấp

class MyResponse { 

    private Long id; 

    @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) 
    private String name; 

    private List<String> addresses; 

    // getters and setters 
} 

My pom.xml có sau

<dependency> 
     <groupId>org.jboss.resteasy</groupId> 
     <artifactId>resteasy-jaxrs</artifactId> 
     <version>2.3.2.Final</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.jboss.resteasy</groupId> 
     <artifactId>resteasy-jackson-provider</artifactId> 
     <version>2.3.2.Final</version> 
     <scope>provided</scope> 
    </dependency> 

Khi scope cho resteasy-jackson-provider được thiết lập để provided nó bỏ qua các chú thích và trả null trong JSON phản ứng. Tuy nhiên khi tôi loại bỏ các scope từ maven phụ thuộc - nó hoạt động.

Từ trang tại đây https://docs.jboss.org/author/display/AS71/Implicit+module+dependencies+for+deployments có vẻ như JBoss sẽ tự động tải mô-đun này nếu triển khai Jax-RS được tìm thấy.

Bây giờ tôi không biết đây có phải là lỗi hay không và liệu tôi có nên thực sự bao gồm sự phụ thuộc này hay không (KHÔNG giữ nó provided). Hoặc có lẽ tôi đang làm điều gì sai ở đó?

Trả lời

14

Bạn cần đảm bảo tạo mô tả cấu trúc triển khai JBoss.

Do đây là một dự án Maven tôi giả sử nó sẽ là dưới src/main/webapp/WEB-INF/JBoss-triển khai-structure.xml

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0"> 
    <deployment> 
    <dependencies> 
     <module name="org.codehaus.jackson.jackson-core-asl" /> 
     <module name="org.codehaus.jackson.jackson-mapper-asl" /> 
    </dependencies> 
    </deployment> 
</jboss-deployment-structure> 

này sẽ cho phép các built-in hỗ trợ cho RESTEasy và Jackson hoạt động chính xác trong JBoss 7.1.x hoặc JBoss EAP 6.x. Không có bộ mô tả RESTEasy này sẽ sử dụng nhà cung cấp Jettison.

+0

Cảm ơn rất nhiều, Mark, điều này đã làm việc (JBoss EAP 6.3) cho tôi và tôi có thể tiếp tục phần còn lại hạnh phúc của tôi mã hóa :) –

Các vấn đề liên quan