带有通用列表的JAXB marshal包装器对象

时间:2014-12-15 17:24:11

标签: json jaxb jersey moxy

我正在使用jersey和MOXy实现Web服务。 Web服务将以JSON结果的形式返回数据。我想使用以下包装类包装一些集合:

public class PaginationWrapper<T>
{
   private List<T> data;
   //other fields
   private...

   public List<T> getData()
   {
      return data;
   }

   public void setData(List<T> data)
   {
      this.data = data;
   }

   //other getter and setter
}

问题是,通用没有结果将被返回。提出了一个例外:

javax.xml.bind.MarshalException
 - with linked exception:
[Exception [EclipseLink-25003] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b):         org.eclipse.persistence.exceptions.XMLMarshalException
Exception Description: An error occurred marshalling the object
Internal Exception: Exception [EclipseLink-25007] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.XMLMarshalException
Exception Description: A descriptor for class packagereplaced.PaginationWrapper was not found in the project.  For JAXB, if the JAXBContext was bootstrapped using TypeMappingInfo[] you must     call a marshal method that accepts TypeMappingInfo as an input parameter.]

替换泛型类型将修复该错误但我不想为我拥有的每个数据对象创建一个包装器。因为我正在使用jersey和moxy实现webservice我无法访问编组本身。我需要一个基于注释的解决方案或其他适用于球衣的东西;)

1 个答案:

答案 0 :(得分:0)

我通过用杰克逊取代MOXy来解决这个问题。没有任何配置,JSON编组工作开箱即用。