【发布时间】:2015-08-05 00:11:28
【问题描述】:
我使用 jdk 1.7 的 wsimport 从 WSDL 创建了 WS 客户端。 客户端作为独立应用程序运行时工作正常。
当我在 JBoss 7 上运行它时,我得到了:
[结束]
java.lang.UnsupportedClassVersionError: rqbalamWs/com/softwareag/namespace/entirex/xml/mapping/jaxws_asm/package-info : Unsupported major.minor version 0.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at org.apache.cxf.common.util.ASMHelper$TypeHelperClassLoader.defineClass(ASMHelper.java:367)
at org.apache.cxf.common.util.ASMHelper.loadClass(ASMHelper.java:316)
at org.apache.cxf.jaxws.WrapperClassGenerator.generatePackageInfo(WrapperClassGenerator.java:267)
at org.apache.cxf.jaxws.WrapperClassGenerator.createWrapperClass(WrapperClassGenerator.java:169)
at org.apache.cxf.jaxws.WrapperClassGenerator.generate(WrapperClassGenerator.java:122)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.generatedWrapperBeanClass(JaxWsServiceFactoryBean.java:683)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.getExtraClass(JaxWsServiceFactoryBean.java:653)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:440)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:548)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:265)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:215)
at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:102)
at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:91)
at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:157)
at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:142)
at org.apache.cxf.jaxws.ServiceImpl.createPort(ServiceImpl.java:478)
at org.jboss.wsf.stack.cxf.client.ProviderImpl$JBossWSServiceImpl.createPort(ProviderImpl.java:558)
at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:345)
at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:336)
at javax.xml.ws.Service.getPort(Service.java:99)
at rqbalamWs.com.softwareag.namespace.entirex.xml.mapping.RQFXONLN.getDB2RQLIBSOAP11Port(RQFXONLN.java:72)
at rqbalamWs.WsClient.send(WsClient.java:16)
at calypsox.engine.FXBalamEngine.handlePSEventTrade(FXBalamEngine.java:87)
at calypsox.engine.FXBalamEngine.process(FXBalamEngine.java:53)
at com.calypso.engine.Engine$EngineThread.run(Engine.java:1413)
这是否意味着在 JBoss 上运行时在类路径中,Apache CXF jars 出现在 JDK WS 实现之前,这会导致错误吗?我应该使用一些 Apache CXF 向导(eclipse)而不是使用 wsimport 创建客户端吗?如果我从 JBoss 中删除 Apache CXF 模块可以吗?
wsdl:
<?xml version="1.0" encoding="UTF-8" ?>
- <definitions name="RQFXONLN" targetNamespace="http://namespace.softwareag.com/entirex/xml/mapping" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://namespace.softwareag.com/entirex/xml/mapping" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:sn0="urn:com-softwareag-entirex-rpc:DB2RQLIB" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/">
- <types>
- <xsd:schema targetNamespace="urn:com-softwareag-entirex-rpc:DB2RQLIB">
- <xsd:element name="RQFXONLN">
- <xsd:complexType>
- <xsd:sequence>
<xsd:element name="RQFXONLN_INPUT_DEAL" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
- <xsd:element name="RQFXONLNResponse">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="RQFXONLN_OUTPUT_RC">
- <xsd:simpleType>
- <xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="5" />
<xsd:fractionDigits value="0" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
- <xsd:element name="RQFXONLN_OUTPUT_RC_INFO">
- <xsd:simpleType>
- <xsd:restriction base="xsd:string">
<xsd:maxLength value="70" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
- <message name="RQFXONLNSoapIn">
<part name="parameters" element="sn0:RQFXONLN" />
</message>
- <message name="RQFXONLNSoapOut">
<part name="parameters" element="sn0:RQFXONLNResponse" />
</message>
- <portType name="DB2RQLIBPort">
- <operation name="RQFXONLN">
<input message="tns:RQFXONLNSoapIn" />
<output message="tns:RQFXONLNSoapOut" />
</operation>
</portType>
- <binding name="DB2RQLIBSOAP11Binding" type="tns:DB2RQLIBPort">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <operation name="RQFXONLN">
<soap:operation soapAction="RQFXONLN" />
- <input>
<soap:body use="literal" />
</input>
- <output>
<soap:body use="literal" />
</output>
</operation>
</binding>
- <binding name="DB2RQLIBSOAP12Binding" type="tns:DB2RQLIBPort">
<soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <operation name="RQFXONLN">
<soap12:operation soapAction="RQFXONLN" />
- <input>
<soap12:body use="literal" />
</input>
- <output>
<soap12:body use="literal" />
</output>
</operation>
</binding>
- <service name="RQFXONLN">
- <port name="DB2RQLIBSOAP12Port" binding="tns:DB2RQLIBSOAP12Binding">
<soap12:address location="http://entirextest:9080/wsstack/services/RQFXONLN.DB2RQLIBSOAP12Port/" />
</port>
- <port name="DB2RQLIBSOAP11Port" binding="tns:DB2RQLIBSOAP11Binding">
<soap:address location="http://entirextest:9080/wssta`enter code here`ck/services/RQFXONLN.DB2RQLIBSOAP11Port/" />
</port>
</service>
</definitions>
【问题讨论】:
-
Stacktrace 在这里会很有帮助,因为不清楚异常来自哪里。你用的是什么CXF版本?奇怪的是版本号:0.0。它表明问题与 ASM 库有关,例如这个问题:stackoverflow.com/questions/1826302/…
-
谢谢我明天会添加 Stacktrace
-
请输入代码。看起来您使用的是 Javadoc .jar 文件,而不是 .class 文件的 .jar 文件。
-
请解释:看起来您使用的是 Javadoc .jar 文件而不是 .class 文件的 .jar 文件。要通过什么代码?所有生成的 wsimport 类? wsdl ?
-
当然不是包信息文件。这是 Javadoc 的一部分。