所以我有一个SOAP应用程序可以正常使用Wildfly,另一个早期基于apache cxf构建并且在tomcat上运行但是我必须使它与Wildfly一起工作所以我添加了一个Jboss-deployment-structure,如下所示。
<?xml version='1.0' encoding='UTF-8'?> <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> <deployment>
<exclude-subsystems>
<subsystem name="webservices" />
</exclude-subsystems> </deployment> </jboss-deployment-structure>
之后两个Web服务都开始在同一个wildfly上运行,但是我注意到如果部署它们可以工作,但是当服务器重新启动时,使用Jboss工作正常的那个提供了以下错误,其中Apache Cxf一个人工作正常。
2017-12-21 04:20:09,856 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /booking/ReservationService: java.lang.LinkageError: Failed to link com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl (Module "deployment.CreateWS.war:main" from Service Module Loader)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:437)
at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:269)
Caused by: java.lang.NoClassDefFoundError: com/sun/org/apache/xerces/internal/dom/DocumentImpl
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:353)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:432)
... 62 more
Caused by: java.lang.ClassNotFoundException: com.sun.org.apache.xerces.internal.dom.DocumentImpl from [Module "deployment.CreateWS.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:130)
... 66 more
预订是使用jboss和CreateWS的WS是apache cxf one。
答案 0 :(得分:0)
我通过在META-INF文件夹中添加一个manifest.mf文件解决了这个问题,该文件依赖于停止工作的webservice,因此每当重新启动服务器时,首先加载旧的WS并进行部署。