stangerestfuljavaee行为

stangerestfuljavaee行为,java,json,rest,jersey,jersey-2.0,Java,Json,Rest,Jersey,Jersey 2.0,我正在Glassfish 4.1上进行JavaEE7应用程序大战。 该应用程序是一个简单的CRUD应用程序。 为了测试CRUD操作,我使用Jersey2客户端api制作了一个JavaSE客户端。 奇怪的行为是HTTP POST创建没有检测到对象的一个字段: 我有一个birthDate属性,它在服务器端总是为空。 我不明白为什么会发生这种情况以及如何解决 以下是我在服务器端使用的依赖项: <dependency> <groupId>org.eclip

我正在Glassfish 4.1上进行JavaEE7应用程序大战。 该应用程序是一个简单的CRUD应用程序。 为了测试CRUD操作,我使用Jersey2客户端api制作了一个JavaSE客户端。 奇怪的行为是HTTP POST创建没有检测到对象的一个字段: 我有一个birthDate属性,它在服务器端总是为空。 我不明白为什么会发生这种情况以及如何解决

以下是我在服务器端使用的依赖项:

    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.core</artifactId>
        <version>2.6.0</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
请帮助我:
谢谢

当http post创建通过Jersey 1.19客户端包时,情况变得更加奇怪。 因此,我得到了一个确认,认为服务器端存在反序列化问题的假设是不正确的,因为它适用于jersey 1.19客户端包。 我重新开始了调查,比较了Jersey 1和Jersey 2客户端的JSON输出,发现区别在于生日的日期格式:

杰西2:出生日期:1990-05-04T22:00:00.000+0000
Jersey 1:生日:2015-10-06T00:24:32.693+02:00您打印出JSON的样子了吗?数据序列化无法达到服务器的预期效果。请检查以确保没有任何内容是暂时的。此字符串映射器是什么。disableSerializationFeature.WRITE_DATES_AS_TIMESTAMPS?告诉我们Customer类。@ MaqISBLUNT:我没有任何瞬态字段,我的实体用@ xMLROOTONE和@ XMLAccoRyTyExxMelAccess St.Pield.注释一个要考虑的事实是,在GalasFISH中使用的实际缺省JSON提供程序是MOXY,而不是杰克逊,如上所述。
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
        <version>2.22</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>2.6.2</version>
    </dependency>
    Client client = ClientBuilder.newClient();
    WebTarget webTarget = client.target("http://localhost:8080/MedicalCenter/rest/customers");

    Customer customer = new Customer("Jason", "Bourne", new Date(), "This is description", new ArrayList<Device>());

    ObjectMapper mapper = new ObjectMapper();

    String mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    result = mapper.writeValueAsString(customer);

    Response response = webTarget.request("application/json")
            .post(Entity.entity(result, MediaType.APPLICATION_JSON_TYPE));
Here is an example {"id":null,
"name":"Jason",
"familyName":"Bourne",
"birthDate":"2015-10-05T21:41:43‌​.044+0000",
"description":"This is description",
"creation":"2015-10-05T21:41:43.044+0000",
"enabled":true,
"system":t‌​rue,
"version":null,
"devices":[]}
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
//Jackson Object Mapper
ObjectMapper mapper = new ObjectMapper();
mapper.setDateFormat(sdf);