在我的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的集合根元素?我知道可以创建一个包装类来实现它,但这似乎不太可能。