axis2: два разных веб-сервиса с одинаковым именем - PullRequest
1 голос
/ 04 августа 2011

У меня есть два разных веб-сервиса (каждый сгенерированный из другого wsdl) с тем же именем «getConfiguration», которые я пытаюсь вставить в один и тот же файл .aar.

В services.xml Iизменил имя второй на «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 представляет два веб-сервиса:

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

Когда я получаю доступ к URL-адресу wsdl getConfiguration (http://host/path/services/getConfiguration?wsdl), ось представляет мне wsdl из службы getConfiguration, который выглядит хорошо. Но если я получаю доступ к URL-адресу wsdl getConfiguration2 (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

Спасибо

1 Ответ

1 голос
/ 04 августа 2011

Недостаточно переименовать файл wsdl, вам также нужно отредактировать wsdl и изменить имя службы следующим образом:

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