java.lang.ClassCastException: org.jboss.ws.core.soap.TextImpl не может быть приведен к javax.xml.soap.SOAPElement

Я работаю над IBM Sterling V 9.3. Я представил Сервис как веб-сервис JAX-WS, используя шаги, предоставленные в центре знаний, на сервере приложений Jboss 4.2.3. EAR-файл успешно развернут, а сервер приложений запущен нормально. Я мог видеть сгенерированный файл WSDL для веб-службы.

Когда я пытался получить доступ к WSDL из инструмента soapUI (версия 3.5.1), в ответном сообщении я получаю следующую ошибку. Я искал то же самое и обнаружил, что у нас должны быть следующие jar-файлы в папке JBOSS_HOME\lib\endorsed:

• jboss-saaj.jar

• jboss-jaxws.jar

• jboss-jaxrpc.jar

• jaxb-api-2.1.9.jar

• xercesImpl.jar

• xalan.jar

• serializer.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 ответа

Я могу решить эту проблему. Мне пришлось удалить все пробелы, комментарии и вопросительные знаки (?) Из запроса (если есть).

После этого все работало нормально. Я думаю, что из-за пробелов в запросе soapUI рассматривал его как некий элемент / значение запроса и не смог преобразовать в SOAPElement.

Надеюсь, это будет полезно для других!

В разделе "Свойства запроса" установите для параметра "Удалять пробелы" значение true. Это должно быть сделано для каждого нового запроса. Я не нашел способ установить true по умолчанию. Знаки вопросов являются заполнителями для параметров, которые должны быть указаны в вашем запросе.

Другие вопросы по тегам