小编Kil*_*ofu的帖子

javax.xml.bind.JAXBException:类<ClassName>也不知道它的任何超类

我有一个RESTful Web服务,我正在使用Java 1.6在Tomcat 6上部署,我看到了一些奇怪的行为.我正在使用大约5个其他war文件部署这个特定的war文件.有问题的Web应用程序还定期以xml格式向远程服务器发送状态消息,所有XML绑定都是使用JAXB 2.1.13完成的.初始部署后,JAXB绑定似乎无法正常工作.也就是说,如果我启动tomcat并等待状态消息被发送,我会收到以下错误:

javax.xml.bind.JAXBException: class StatusMessage nor any of its super class is known to this context. 
Run Code Online (Sandbox Code Playgroud)

(为简洁起见,我省略了完全限定的类名).对RESTful服务的任何传入请求也会抛出相同的异常.

如果我在每次战争中打包所有库,我都没有看到这个问题,但是我试图不这样做,因为我的WAR文件变得非常臃肿.JAX库被包装在这场战争中,但像Spring这样的东西, commons-*,hibernate,在tomcat/lib中.有没有人有任何想法可能导致这种奇怪的部署顺序敏感性?

这里有一些代码细节,每次触发状态消息时都会发生以下情况:

JAXBElement<StatusMessage> el = ( new ObjectFactory() ).createHeartbeat( statusMessage );
ApiUtils apiUtil = new ApiUtils();

NamespaceFilter outFilter = new NamespaceFilter("http://middleware/status", true);
String xml = apiUtil.makeXml( el, "com.package.path.status", ApiUtils.getFormatXMLSetting(), ApiUtils.getValidateXMLSetting(), outFilter);
Run Code Online (Sandbox Code Playgroud)

makeXML调用如下所示:

public String makeXml(JAXBElement el, String packageName, Boolean formatXml, Boolean validateXml, NamespaceFilter outFilter) throws JAXBException,
SAXException, UnsupportedEncodingException, IOException{

    // Marshal XML
    JAXBContext jaxbContext = JAXBContext.newInstance( packageName );
    Marshaller …
Run Code Online (Sandbox Code Playgroud)

java spring tomcat jaxb

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×1

jaxb ×1

spring ×1

tomcat ×1