2

在我的应用程序中,我用作 Web 服务器 Widlfly 17.0.1 和 wsdl webservices Axis2 1.7.6

尝试通过客户端程序从服务器 URL(如http://myserver:8080/myapp/services/MyService?wsdl )通过 URL 检索 wsdl 时出现错误

当我在浏览器中点击 URL 时,我得到

<error>
  <description>Unable to generate WSDL 1.1 for this service</description>
  <reason>
    If you wish Axis2 to automatically generate the WSDL 1.1, then please set useOriginalwsdl as false in 
    your services.xml
  </reason>
</error>

到目前为止,我已经尝试了这里建议的解决方案useOriginalwsdl=true 在axis2中不起作用 但没有成功,错误仍然保持不变。

此外,我的 wsdl 和 xsd 似乎是有效的,并且服务器服务端点也可以正常工作并且符合预期。

当我使用带有提供的 wsdl 的 soapUI 或我的客户端时,该服务似乎工作正常并且正在返回所需的响应。

但是我需要通过服务器服务 URL(如http://myserver:8080/myapp/services/MyService?wsdl )将 wsdl 检索到客户端,因为由于技术限制,我无法在客户端项目中提供它。

我的 services.xml 如下:

   <service name="MyService">
        <messageReceivers>
            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="org.test.MyServiceMessageReceiverInOut"/>
        </messageReceivers>
        <parameter name="ServiceClass">org.test.MyServiceSkeleton</parameter>
        <parameter name="useOriginalwsdl">true</parameter>
        <parameter name="modifyUserWSDLPortAddress">true</parameter>
        <operation name="getDocument" mep="http://www.w3.org/ns/wsdl/in-out" namespace="http://ws.test.org/myapp/myservice">
            <actionMapping>getValue</actionMapping>
            <outputActionMapping>http://ws.test.org/myapp/myservice/myservicePortType/output2</outputActionMapping>
        </operation>
        <operation name="setValue" mep="http://www.w3.org/ns/wsdl/in-out" namespace="http://ws.test.org/myapp/myservice">
            <actionMapping>setValue</actionMapping>
            <outputActionMapping>http://ws.test.org/myapp/myservice/myservicePortType/output1</outputActionMapping>
        </operation>
    </service>

wsdl文件里面的服务声明如下:

   <service name="MyService">
        <port name="myservicePort" binding="tns:myserviceBinding">
            <soap:address location="http://${MyHost}:${MyPort}/myapp/services/MyService"/>
        </port>
    </service>

任何人的任何想法?

4

0 回答 0