java - 轴2 : two different webservices sharing the same name

标签 java web-services apache-axis

我有两个不同的 Web 服务(每个都是从不同的 wsdl 生成的),具有相同的名称“getConfiguration”,我试图将其放入同一个 .aar 文件中。

在 services.xml 中,我将第二个的名称更改为“getConfiguration2”, 所以我的 services.xml 文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
<service name="getConfiguration">
        <messageReceivers>
            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="wi.xpto.webservice.GetConfigurationMessageReceiverInOut"/>
        </messageReceivers>
        <parameter name="ServiceClass">wi.xpto.webservice.GetConfigurationSkeleton</parameter>
        <parameter name="useOriginalwsdl">true</parameter>
        <parameter name="modifyUserWSDLPortAddress">false</parameter>
        <operation name="getConfiguration" mep="http://www.w3.org/ns/wsdl/in-out" namespace="http://6.xpto.com/v/i/wsd/getConfiguration">
            <actionMapping>v_i_wsd_getConfiguration_Binder_getConfiguration</actionMapping>
            <outputActionMapping>http://6.xpto.com/v/i/wsd/getConfiguration/getConfiguration_PortType/getConfigurationResponse</outputActionMapping>
        </operation>
    </service>  

    <service name="getConfiguration2">
        <messageReceivers>
            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="wi.xpto.webservice2.GetConfigurationMessageReceiverInOut"/>
        </messageReceivers>
        <parameter name="ServiceClass">wi.xpto.webservice2.GetConfigurationSkeleton</parameter>
        <parameter name="useOriginalwsdl">true</parameter>
        <parameter name="modifyUserWSDLPortAddress">false</parameter>
        <operation name="getConfiguration" mep="http://www.w3.org/ns/wsdl/in-out" namespace="http://7.xpto.com/VResouce_I/wsd/getConfiguration">
            <actionMapping>VResouce_I_wsd_getConfiguration_Binder_getConfiguration</actionMapping>
            <outputActionMapping>http://7.xpto.com/VResouce_I/wsd/getConfiguration/getConfiguration_PortType/getConfigurationResponse</outputActionMapping>
        </operation>
    </service>

</serviceGroup>

services/listServices 提供了两个 Web 服务:

-> getConfiguration
Service EPR : http://host/path/services/getConfiguration
Service Description : getConfiguration
Service Status : Active
Available Operations
getConfiguration

-> getConfiguration2
Service EPR : http://host/path/services/getConfiguration2
Service Description : getConfiguration2
Service Status : Active
Available Operations
getConfiguration

当我访问 getConfiguration wsdl url (http://host/path/services/getConfiguration?wsdl) 时,轴向我呈现来自 getConfiguration 服务的 wsdl,看起来不错。 但是,如果我访问 getConfiguration2 wsdl url (http://host/path/services/getConfiguration2?wsdl),则会出现以下错误:

<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>

aar 文件包含两个 wsdl(第二个也重命名为 getConfiguration2):

META-INF/getconfiguration.wsdl
META-INF/getConfiguration2.wsdl

知道为什么以及如何解决吗? 如果我在 services.xml 文件中评论其中一个,则另一个可以正常工作。 我的设置:Linux + Java 1.6 + Tomcat + axis 2

谢谢

最佳答案

仅重命名 wsdl 文件是不够的,您还需要编辑 wsdl 并更改服务名称,如下所示:

<wsdl:service name="getConfiguration2">
      <wsdl:port name="..." binding="tns:...">
         <soap:address location="http://hostname:port/path/..."/>
      </wsdl:port>
</wsdl:service>

关于java - 轴2 : two different webservices sharing the same name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6945387/

相关文章:

java - 如何刷新 JTable 绑定(bind)到 MySQL 数据库

java - 为什么 volatile 比非 volatile 工作得更快?

c# - 如何在 c# ASP.Net 中创建具有有效 JSON 输出并使用 JQuery/Ajax 进行查询的 JSON WebService

java - Axis2 测试客户端错误

java - Axis2 Web 服务 - 版本控制

Java在单个数组中查找唯一数字的 boolean 方法

java - 无法获取方法 notifydatasetchanged

web-services - 在不抨击 API 的情况下开发/测试 Twitter 应用程序

javascript - AWS 无服务器 Web 应用程序示例

java - 既没有为 Axis2 Web 应用程序指定部署目录也没有指定 war 文件