Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RESTEasy易拉罐';使用动态创建的类时,找不到application/xml的消息正文编写器_Java_Xml_Maven_Resteasy_Cglib - Fatal编程技术网

Java RESTEasy易拉罐';使用动态创建的类时,找不到application/xml的消息正文编写器

Java RESTEasy易拉罐';使用动态创建的类时,找不到application/xml的消息正文编写器,java,xml,maven,resteasy,cglib,Java,Xml,Maven,Resteasy,Cglib,找不到媒体类型为application/xml的java.util.ArrayList类型的响应对象的MessageBodyWriter 我在尝试以xml形式返回动态创建的类/DTO列表的响应时遇到上述错误 @GET @Path("objects") public Response getObjects( @DefaultValue("json") @QueryParam("format") String format) { GenericEntity enti

找不到媒体类型为application/xml的java.util.ArrayList类型的响应对象的MessageBodyWriter

我在尝试以xml形式返回动态创建的类/DTO列表的响应时遇到上述错误

@GET
@Path("objects")
public Response getObjects(
        @DefaultValue("json") @QueryParam("format") String format)
{    
     GenericEntity entity;

     //I use cglib here to dynamically at runtime create a class called objectDto.
     //The class is just a POJO.

     List<Object> objectsDto = generateObjects(fields);

     entity = new GenericEntity<List<Object>>(objectsDto){};

     Response.ResponseBuilder rBuild;

    if (format.equals("xml"))
    {
        rBuild = Response.ok(entity, MediaType.APPLICATION_XML);
    }
    else
    {
        rBuild = Response.ok(entity, MediaType.APPLICATION_JSON);
    }

    return rBuild.build();
}
@GET
@路径(“对象”)
公共响应对象(
@DefaultValue(“json”)@QueryParam(“格式”)字符串格式)
{    
一般实体;
//我在这里使用cglib在运行时动态创建一个名为objectDto的类。
//这门课只是一个POJO。
List objectsDto=生成对象(字段);
实体=新的泛型实体(objectsDto){};
Response.ResponseBuilder rBuild;
if(format.equals(“xml”))
{
rBuild=Response.ok(实体,MediaType.APPLICATION\uxml);
}
其他的
{
rBuild=Response.ok(实体,MediaType.APPLICATION\ujson);
}
返回rBuild.build();
}
奇怪的是,我可以返回这个对象的JSON表示,但不能返回XML。我还可以返回非动态创建类的XML表示

在我的Maven项目中,我对resteasy jaxb provider有正确的依赖关系:

<dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxb-provider</artifactId>
        <version>3.0.6.Final</version>
</dependency>

org.jboss.resteasy
resteasy jaxb提供程序
3.0.6.1最终版本

这不可能使用现成的cglib。由于没有继承,cglib创建的子类将不再携带此注释。Cglib本身是在将注释引入Java之前编写的,最近没有任何更新添加此功能。您可以改为向cglib增强器注册ASM访问者,该增强器应负责将注释添加到cglib生成的类中


但是,您可能需要考虑创建具有更现代API的类,并支持注释的编写。

当您用CGLIB生成类时,您还为它们生成JAXB注释吗?我想您已经在那里遇到了问题……我需要用@XmlRootElement注释我的类。。。现在来了解如何向类添加注释:):)谢谢兄弟的帮助!是的,因为@Greg Whitakers的评论,我也从其他线程中发现这是不可能的。我现在将研究javassist,谢谢。