JMS消息,无法封送类型“java.lang.String”作为元素,因为它缺少@XmlRootElement注释

时间:2013-08-24 04:50:07

标签: java jaxb sax

我有一个无法解释的问题,刚刚出现。在生产中,RedHat网络服务器操作系统已更新/修补,当它重新启动时,我们的spring jms应用程序突然停止工作。没有代码发生变化。

以下是错误消息:

javax.xml.bind.MarshalException
 - with linked exception:
[com.sun.istack.SAXException2: unable to marshal type "java.lang.String" as an element because it is missing an @XmlRootElement annotation]
        at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:318)
        at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:244)
        at ca.mycompany.middleware.data.serializer.JAXBSerializer.serialize(JAXBSerializer.java:30)

...

 Caused by: com.sun.istack.SAXException2: unable to marshal type "java.lang.String" as an element because it is missing an @XmlRootElement annotation
        at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:248)
        at com.sun.xml.bind.v2.runtime.LeafBeanInfoImpl.serializeRoot(LeafBeanInfoImpl.java:137)
        at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:494)
        at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315)
        ... 15 more

我不明白这是什么问题?

更新:

我发现了问题。当我开始单步执行代码时,我发现问题的真正根源是我的应用程序被此异常阻止:

javax.net.ssl.SSLException:无法识别的SSL消息,明文连接?

我有一个解决方法,但我正在试图弄清楚改变了什么来阻止我以前调用web服务的方式。

1 个答案:

答案 0 :(得分:0)

那么,你的java版本升级了吗? 看起来好像在代码的这个区域:

at ca.mycompany.middleware.data.serializer.JAXBSerializer.serialize(JAXBSerializer.java:30)

你正在尝试JAXB序列化一个字符串。这是不允许的。如果它是旧版本中的错误,我不会感到惊讶。