我正在尝试使用maven在weblogic服务器中部署axis2 webservices。该项目有maven模块,其中一个是我已定义轴servlet的战争.Wsdl在那里,所以我使用wsdl2code插件生成xmlbean和模式并将其放在jar模块中。结构如下。
--lv-ear (ear with dependency on war)
|
--lv-ws
|
--lv-ws-ccid (jar module with skeleton and xmlbeans)
|
--lv-ws-ecs (jar module with skeleton and xmlbeans)
|
--lv-ws-web (war module with dep on jar modules)
|
--WEB-INF
|
--conf/axis2.xml
--services/ccid/services.xml
我构建并将其部署到weblogic域。战争成功部署,作为耳朵和部署服务的一部分。我能够访问wsdl文件。当我尝试调用该服务时,我得到了一个模式文件的 ClassNotFoundException 。
Caused by: java.lang.ClassNotFoundException: schemaorg_apache_xmlbeans.system.s2104B1E6E09A2A85656B3E630BA151C1.TypeSystemHolder
我看到该路径中的随机字符串对我不同。所以我试着再次打电话,并在 NoClassDefFoundError 之下,即使我尝试了不同的方法,它仍然存在。
java.lang.NoClassDefFoundError: Could not initialize class com.lv.ws.ccid.xmlbean.InputDocument
at com.lv.ws.ccid.xmlbean.InputDocument$Factory.parse(InputDocument.java:463)
at com.lv.ws.ccid.CcidMessageReceiverInOut.fromOM(CcidMessageReceiverInOut.java:332)
at com.lv.ws.ccid.CcidMessageReceiverInOut.invokeBusinessLogic(CcidMessageReceiverInOut.java:46)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:173)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:144)
我搜索了这个,发现了一些根据http://axis.apache.org/axis2/java/core/docs/app_server.html为ax2配置应用服务器的内容。当我尝试它时,我得到了以下错误。
weblogic.xml.stax.XmlStreamInputFactory can not be cast to javax.xml.stream.XmlInputFactory
在丢弃该配置之后,我通过将web服务框架和xmlbean文件放在aar中并将aar放在 WEB-INF / services 中进行了一些其他可能的部署。我也尝试将jar文件中的 Class-Path 条目放入ear / war中的MANIFEST.MF中,但无济于事。我仍然得到了相同的 NoClassDefFoundError 。你能给我一些关于解决问题的建议吗?
答案 0 :(得分:0)
现在修复它。这是由于我缺乏Axis的经验。问题是,我将生成的模式和xmlbean文件移动到src文件夹,然后尝试使用普通的jar函数和依赖项进行部署。
现在,我将它们从src文件夹中删除,并使用wsdl2code和axis2-aar插件动态生成xmlbean和schema文件,然后将它们打包在aar中。然后我将aar部署到webapp,它工作正常。我在< build>中列出了插件配置下面。
<plugins>
<plugin>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-wsdl2code-maven-plugin</artifactId>
<version>1.5.4</version>
<executions>
<execution>
<id>ccid-ws</id>
<goals>
<goal>wsdl2code</goal>
</goals>
</execution>
</executions>
<configuration>
<packageName>com.lv.ws.ccid</packageName>
<wsdlFile>${basedir}/src/main/resources/META-INF/ccid.wsdl</wsdlFile>
<databindingName>xmlbeans</databindingName>
<syncMode>sync</syncMode>
<unpackClasses>true</unpackClasses>
<namespaceToPackages>https://mdm.com/portal/ws/services/ccid=com.lv.ws.ccid.xmlbean</namespaceToPackages>
<outputDirectory>${basedir}/target/generated-sources</outputDirectory> <generateServerSide>false</generateServerSide>
<generateServicesXml>true</generateServicesXml>
<skipWSDL>true</skipWSDL>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-aar-maven-plugin</artifactId>
<version>1.6.2</version>
<extensions>true</extensions>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>aar</goal>
</goals>
</execution>
</executions>
<configuration>
<aarName>ccid</aarName>
<includeDependencies>false</includeDependencies>
<outputDirectory>${project.build.directory}/aar</outputDirectory>
</configuration>
</plugin>
</plugins>