【发布时间】:2013-09-18 15:35:29
【问题描述】:
我正在使用 RESTEasy 库编写一个 RESTful WS 应用程序。 我一直在寻找一种动态修改某些模型/xml 映射的方法,并找到了 MOXY 的 JAXB 实现。
问题是当我使用文件 jaxb.properties 指定 MOXY 的实现时,当我尝试检索 JAXBContext 时,出现以下异常:
javax.xml.bind.JAXBException:
Exception Description: Name collision. Two classes have the XML type with uri http://www.w3.org/2001/XMLSchema and name anyType.
- with linked exception:
[Exception [EclipseLink-50007] (Eclipse Persistence Services - 2.6.0.v20130912-6b5e067): org.eclipse.persistence.exceptions.JAXBException
使用 RESTEasy JAXB 不会引发此类异常。 我试图删除所有 @XMLElement 以避免引用一些未知类,但没有任何效果。 这是类定义:
@XmlRootElement(name = "user")
@XmlAccessorType(XmlAccessType.NONE)
public class User extends HistorizedObject implements java.io.Serializable
{
@XmlElement(name="refNumber")
private String m_ref;
...
}
以及我尝试检索 JAXBContext 的方式:
JAXBContext jaxbContext = JAXBContext.newInstance(User.class);
没有关于哪些类发生冲突的线索。 你有什么想法吗?
谢谢
编辑:
这是我的 jaxb.properties 文件,它与 User 类位于同一包中:
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
这是 HistorizedObject 类定义,它位于与 User 类不同的包中:
@XmlAccessorType(XmlAccessType.NONE)
public abstract class HistorizedObject implements PersistentObject, Cloneable{
@XmlElement(name="userCreate")
protected String userCreate="";
@XmlElement(name="userUpdate")
protected String userUpdate;
...
}
我的应用程序使用 RestEasy 2.3.5 在 JBoss 4.2.3GA 下运行。 我使用的 moxy 的构建版本在上面的异常消息中指定。 如果您需要更多信息,请告诉我。
EDIT2:
当我指定类 Login(与 User 位于同一包中)时检索 JAXBContext 工作正常。 Login 类的注解和 User 类的注解是一样的,所以很明显这个类的源代码中有些东西是在引发异常。 问题是这个类有3000行长...... 你知道我应该从哪里开始寻找什么吗?
这里是登录类的类定义:
@XmlRootElement(name = "login")
@XmlAccessorType(XmlAccessType.NONE)
public class Login extends HistorizedObject implements java.io.Serializable
{
/** Email address */
@XmlElement(name="emailAddress")
private String m_email;
...
}
EDIT3:
好的,我发现了一些有趣的东西。 这是导致名称冲突的 User 类中的代码:
public static final HashMap<String, Object[]> USERTYPEOFELEM;
static
{
USERTYPEOFELEM = new HashMap<String, Object[]>();
USERTYPEOFELEM.put("GENDER", new Object[]{Constants.IMPORT_LISTOFVALUE, "gender"});
...
}
我了解此 HashMap 中的对象可能无法解析并发生冲突,但此 hashmap 没有注释,不应该被编组,对吗? 这是 MOXY 实现的错误还是我错过了什么?
【问题讨论】:
-
您能否发布更多信息。在这一点上,我不确定如何重新创建您所看到的问题。
-
@BlaiseDoughan 发布了更多信息
-
@BlaiseDoughan 我可能在 MOXY 的 JAXB 实现中发现了一个错误。你能确认一下吗?
-
这里可能有错误。我仍在尝试根据您提供的信息重新创建用例。您能否打开一个错误并附加一个测试用例:bugs.eclipse.org/bugs/enter_bug.cgi?product=EclipseLink。或者您可以通过我的博客与我进行电子邮件对话:blog.bdoughan.com/p/contact_01.html。
标签: java xml jaxb marshalling moxy