XmlRootElement GenericEntity Jersey和Resteasy

时间:2015-12-28 14:00:22

标签: jersey jax-rs resteasy java-ee-7

在我的Java EE项目中,我正在使用JAX-RS。有时我需要回收一个集合。我们的想法是尽可能保持实现的通用性,以便我可以在不同的应用服务器之间轻松部署。当我在GenericEntity上使用List<?>时,我会在Resteasy(Wildfly)和Jersey(Glassfish)上获得2个不同的XmlRootElements。我的切入点:

@Path("/example")
@RequestScoped
public class ExampleResponse {

    @GET
    @Produces({MediaType.APPLICATION_XML})
    public Response getResponse() {
        List<TestEntity> entities = new ArrayList<>();
        entities.add(new TestEntity());
        entities.add(new TestEntity());
        entities.add(new TestEntity());

        GenericEntity<List<TestEntity>> generic = new GenericEntity<List<TestEntity>>(entities){};

        return Response.ok().entity(generic).build();
    }
}

Resteasy的结果:

<collection> <!--root element collection-->
    <testEntity>
        <val1>Hi</val1>
        <val2>Bye</val2>
    </testEntity>
    <testEntity>
        <val1>Hi</val1>
        <val2>Bye</val2>
    </testEntity>
    <testEntity>
        <val1>Hi</val1>
        <val2>Bye</val2>
    </testEntity>
</collection>

泽西岛的结果:

<testEntities> <!--root element plural-->
    <testEntity>
        <val1>Hi</val1>
        <val2>Bye</val2>
    </testEntity>
    <testEntity>
        <val1>Hi</val1>
        <val2>Bye</val2>
    </testEntity>
    <testEntity>
        <val1>Hi</val1>
        <val2>Bye</val2>
    </testEntity>
</testEntities>

是否可以通过配置使用具有Resteasy的复数根元素或使用Jersey的集合根元素?我知道可以创建一个包装类来实现它,但这似乎不太可能。

0 个答案:

没有答案