我有一个无法解释的问题,刚刚出现。在生产中,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服务的方式。
答案 0 :(得分:0)
那么,你的java版本升级了吗? 看起来好像在代码的这个区域:
at ca.mycompany.middleware.data.serializer.JAXBSerializer.serialize(JAXBSerializer.java:30)
你正在尝试JAXB序列化一个字符串。这是不允许的。如果它是旧版本中的错误,我不会感到惊讶。