java.lang.ClassCastException:org.jboss.ws.core.soap.TextImpl无法强制转换为javax.xml.soap.SOAPElement

时间:2015-01-08 09:25:05

标签: web-services jboss jax-ws soapui ibm-sterling

我正在开发 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>

2 个答案:

答案 0 :(得分:1)

我可以解决此问题。我不得不从请求中删除所有空格,注释和问号(?)(如果有的话)。

之后它运作良好。我认为,由于请求中有空格,soapUI将其视为某种请求元素/值,并且无法转换为SOAPElement。

希望这会对其他人有所帮助!

答案 1 :(得分:1)

在“请求属性”下,设置&#34;删除空格&#34;为真。必须为每个新请求执行此操作。我没有找到默认设置为true的方法。 问号是必须在您的请求中提供的参数的占位符。