我正在开发 IBM Sterling V 9.3 。我已在 Jboss 4.2.3 应用服务器上成功使用知识中心提供的步骤将服务公开为 JAX-WS Web服务。 EAR文件已成功部署,应用服务器启动正常。我可以看到为Web服务生成的WSDL文件。
当我尝试从 soapUI工具(版本3.5.1)访问WSDL时,我在响应消息中收到以下错误。我搜索了相同的内容,发现我们应该在JBOSS_HOME \ lib \ endorsed文件夹下有以下jar:
•jboss-saaj.jar
•jboss-jaxws.jar
•jboss-jaxrpc.jar
•jaxb-api-2.1.9.jar
•xercesImpl.jar
•xalan.jar
•serializer.jar
我添加了上面的jar但仍然遇到了同样的错误。如果需要,可以分享更多细节。请帮忙。
错误讯息:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header/>
<env:Body>
<env:Fault>
<faultcode>env:Server</faultcode>
<faultstring>java.lang.ClassCastException: org.jboss.ws.core.soap.TextImpl cannot be cast to javax.xml.soap.SOAPElement</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
WSDL文件:
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="SearsBeansService"
targetNamespace="http://webservices.sears.com/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://webservices.sears.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<types>
<xsd:schema>
<xsd:import
namespace="http://webservices.sears.com/documentation/SearsGetOrderListForWSCService/searsGetOrderListForWSCService/output" schemaLocation="SearsBeansService_schema1.xsd"/>
</xsd:schema>
<xsd:schema>
<xsd:import
namespace="http://webservices.sears.com/documentation/SearsGetOrderListForWSCService/searsGetOrderListForWSCService/input" schemaLocation="SearsBeansService_schema2.xsd"/>
</xsd:schema>
<xsd:schema>
<xsd:import
namespace="http://webservices.sears.com/documentation/SearsGetOrderDetailsForWSCService/searsGetOrderDetailsForWSCService/output" schemaLocation="SearsBeansService_schema3.xsd"/>
</xsd:schema>
<xsd:schema>
<xsd:import
namespace="http://webservices.sears.com/documentation/SearsGetOrderDetailsForWSCService/searsGetOrderDetailsForWSCService/input" schemaLocation="SearsBeansService_schema4.xsd"/>
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://webservices.sears.com/" schemaLocation="SearsBeansService_schema5.xsd"/>
</xsd:schema>
<xsd:schema>
<xsd:import
namespace="http://www.sterlingcommerce.com/documentation/types" schemaLocation="yfctype.xsd"/>
</xsd:schema>
</types>
<message name="searsGetOrderDetailsForWSCService">
<part element="tns:searsGetOrderDetailsForWSCService" name="parameters"/>
</message>
<message name="searsGetOrderDetailsForWSCServiceResponse">
<part element="tns:searsGetOrderDetailsForWSCServiceResponse" name="parameters"/>
</message>
<message name="XBeanWSException">
<part element="tns:XBeanWSException" name="fault"/>
</message>
<message name="searsGetOrderListForWSCService">
<part element="tns:searsGetOrderListForWSCService" name="parameters"/>
</message>
<message name="searsGetOrderListForWSCServiceResponse">
<part element="tns:searsGetOrderListForWSCServiceResponse" name="parameters"/>
</message>
<portType name="SearsBeans">
<operation name="searsGetOrderDetailsForWSCService">
<input message="tns:searsGetOrderDetailsForWSCService"/>
<output message="tns:searsGetOrderDetailsForWSCServiceResponse"/>
<fault message="tns:XBeanWSException" name="XBeanWSException"/>
</operation>
<operation name="searsGetOrderListForWSCService">
<input message="tns:searsGetOrderListForWSCService"/>
<output message="tns:searsGetOrderListForWSCServiceResponse"/>
<fault message="tns:XBeanWSException" name="XBeanWSException"/>
</operation>
</portType>
<binding name="SearsBeansPortBinding" type="tns:SearsBeans">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="searsGetOrderDetailsForWSCService">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="XBeanWSException">
<soap:fault name="XBeanWSException" use="literal"/>
</fault>
</operation>
<operation name="searsGetOrderListForWSCService">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="XBeanWSException">
<soap:fault name="XBeanWSException" use="literal"/>
</fault>
</operation>
</binding>
<service name="SearsBeansService">
<port binding="tns:SearsBeansPortBinding" name="SearsBeansPort">
<soap:address location="REPLACE_WITH_ACTUAL_URL"/>
</port>
</service>
</definitions>
答案 0 :(得分:1)
我可以解决此问题。我不得不从请求中删除所有空格,注释和问号(?)(如果有的话)。
之后它运作良好。我认为,由于请求中有空格,soapUI将其视为某种请求元素/值,并且无法转换为SOAPElement。
希望这会对其他人有所帮助!
答案 1 :(得分:1)
在“请求属性”下,设置&#34;删除空格&#34;为真。必须为每个新请求执行此操作。我没有找到默认设置为true的方法。 问号是必须在您的请求中提供的参数的占位符。