axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Saminda Abeyruwan <sami...@opensource.lk>
Subject Re: [axis2]Questions on service name
Date Tue, 06 Dec 2005 06:10:47 GMT
Hi Iksrazal,

A little work around for you.

You need to supply the wsa action to the operation {eventhough your wsdl 
doesn't contain one}. For ex;

In your services.xml just put the following entry
....

<service name="SWAAutoDispatchEndpoint">
<parameter name="ServiceClass" 
locked="false">com.siemens.swa.plugins.webservices.types.SWAAutoDispatchEndpointSkeleton</parameter>
<!--Mounting the method webLogin-->
<operation name="webLogin">
<messageReceiver 
class="com.siemens.swa.plugins.webservices.types.SWAAutoDispatchEndpointMessageReceiver"/>
*<parameter name="wsamapping">urn:SWAAutoDispatchEndpoint</parameter>*
</operation>
</service>
....

In your stub's invoking operation add,
.....
*options.setAction("urn:SWAAutoDispatchEndpoint");*
.....

Saminda 


iksrazal wrote:

>I used your advice and I'm still getting "operation not found" .  I'm not sure 
>about WEB-INF/axis2.xml - do I need to make changes there ? However, I'm 
>pretty sure my error is due to the client. Might someone be able to give my 
>client code a look? 
>
>    public static void main(String[] args) {
>        try {
>
>            System.out.println("webLogin, firing...");
>            SWAAutoDispatchEndpointStub stub = 
>                new SWAAutoDispatchEndpointStub(null, 
>                    
>"http://localhost:8080/axis2/services/SWAAutoDispatchEndpoint");
>
>            WebLoginElementDocument webLoginElementDocument 
>                = WebLoginElementDocument.Factory.newInstance();
>            WebLoginElement webLoginElement = 
>                WebLoginElement.Factory.newInstance();
>            webLoginElement.setUserNameElement("joe");
>            webLoginElement.setUserPasswordElement("sixpack");
>            webLoginElementDocument.setWebLoginElement(webLoginElement);
>            stub.webLogin(webLoginElementDocument);
>            
>        } catch (AxisFault axisFault) {
>            axisFault.printStackTrace();
>        } catch (Exception ex) {
>            ex.printStackTrace();
>        }
>    }
>
>The endpoint "http://localhost:8080/axis2/services/SWAAutoDispatchEndpoint" is 
>what shows correctly on the happy axis page. 
>
>My aar file is: 
>
>SWAAutoDispatchEndpoint.aar
>
>My services.xml file is: 
>
><!--Auto generated Axis Service XML-->
><service name="SWAAutoDispatchEndpoint">
><parameter name="ServiceClass" 
>locked="false">com.siemens.swa.plugins.webservices.types.SWAAutoDispatchEndpointSkeleton</parameter>
><!--Mounting the method webLogin-->
><operation name="webLogin">
><messageReceiver 
>class="com.siemens.swa.plugins.webservices.types.SWAAutoDispatchEndpointMessageReceiver"/>
></operation>
></service>
>
>WSDL file is: 
><?xml version="1.0" encoding="UTF-8"?>
>
><definitions name="SWAAutoDispatchService" 
>targetNamespace="http://swaAutoDispatch" xmlns:tns="http://swaAutoDispatch" 
>xmlns="http://schemas.xmlsoap.org/wsdl/" 
>xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
>xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
>xmlns:ns2="http://swaAutoDispatch/types">
>  <types>
>    <schema targetNamespace="http://swaAutoDispatch/types" 
>xmlns:tns="http://swaAutoDispatch/types" 
>xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" 
>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
>xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
>xmlns="http://www.w3.org/2001/XMLSchema">
>      <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
>      <complexType name="ReturnWebBase">
>        <sequence>
>          <element name="errorMessage" type="string"/>
>          <element name="successErrorCode" 
>type="int"/></sequence></complexType>
>      <complexType name="ReturnWebLogin">
>        <complexContent>
>          <extension base="tns:ReturnWebBase">
>            <sequence>
>              <element name="SOAP_Session_id" type="string"/>
>              <element name="web_user_name" 
>type="string"/></sequence></extension></complexContent></complexType>
>      <element name="webLoginElement">
>        <complexType>
>          <sequence>
>            <element ref="tns:user_nameElement"/>
>            <element ref="tns:user_passwordElement"/>
>          </sequence>
>        </complexType>
>      </element>
>      <element name="user_nameElement" type="xsd:string"/>
>      <element name="user_passwordElement" type="xsd:string"/>
>      <element name="ReturnWebLoginElement" type="ns2:ReturnWebLogin"/>
>      <element name="ReturnWebBaseElement" type="ns2:ReturnWebBase"/>
></schema></types>
>  <message name="SWAAutoDispatchEndpoint_webLogin">
>     <part name="parameters" element="ns2:webLoginElement"/>
>  </message>
>  <message name="SWAAutoDispatchEndpoint_webLoginResponse">
>    <part name="result" element="ns2:ReturnWebLoginElement"/>
>  </message>
>  <portType name="SWAAutoDispatchEndpoint">
>    <operation name="webLogin">
>      <input message="tns:SWAAutoDispatchEndpoint_webLogin" 
>name="SWAAutoDispatchEndpoint_webLogin"/>
>      <output message="tns:SWAAutoDispatchEndpoint_webLoginResponse" 
>name="SWAAutoDispatchEndpoint_webLoginResponse"/>
>    </operation>
>  </portType>
>  <binding name="SWAAutoDispatchEndpointBinding" 
>type="tns:SWAAutoDispatchEndpoint">
>    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" 
>style="document"/>
>    <operation name="webLogin">
>      <soap:operation soapAction=""/>
>      <input name="SWAAutoDispatchEndpoint_webLogin">
>        <soap:body use="literal"/>
>      </input>
>      <output name="SWAAutoDispatchEndpoint_webLoginResponse"> 
>        <soap:body use="literal"/>
>      </output>
>    </operation>
>  </binding>
>  <service name="SWAAutoDispatchService">
>    <port name="SWAAutoDispatchEndpointPort" 
>binding="tns:SWAAutoDispatchEndpointBinding">
>      <soap:address 
>location="http://localhost:8080/axis2/services/SWAAutoDispatchEndpoint"/></port></service></definitions>
>
>Cheers,
>iksrazal
>
>
>Em Terça 29 Novembro 2005 18:30, o Dong Liu escreveu:
>  
>
>>Hi,
>>
>>I guess the endpoint reference in your case should be the one in your
>>services.xml, i.e.
>>http://localhost:8080/axis2/services/SWAAutoDispatchEndpoint
>>
>>To ensure the service works, my practice is to name the .aar package
>>the same as the service name in your services.xml and test the
>>endpoint without putting wsdl file in the package. Actually, I suspect
>>that axis 2 works independently with the wsdl's associated to
>>services.
>>
>>Cheers,
>>
>>Don
>>
>>On 11/29/05, iksrazal <iksrazal@gmail.com> wrote:
>>    
>>
>>>I've got a similar problem and what you describe doesn't match the
>>>services.xml file produced by WSDL2Java .
>>>
>>>This is my file produced by WSDL2Java :
>>>
>>><!--Auto generated Axis Service XML-->
>>><service name="SWAAutoDispatchEndpoint">
>>><parameter name="ServiceClass"
>>>locked="false">com.siemens.swa.plugins.webservices.types.SWAAutoDispatchE
>>>ndpointSkeleton</parameter> <!--Mounting the method webLogin-->
>>><operation name="webLogin">
>>><messageReceiver
>>>class="com.siemens.swa.plugins.webservices.types.SWAAutoDispatchEndpointM
>>>essageReceiver"/> </operation>
>>></service>
>>>
>>>Here's my the relevant wsdl section, with full wsdl below:
>>>
>>>  <service name="SWAAutoDispatchService">
>>>    <port name="SWAAutoDispatchEndpointPort"
>>>binding="tns:SWAAutoDispatchEndpointBinding">
>>>      <soap:address
>>>location="http://localhost:8080/axis2/services/SWAAutoDispatchEndpoint"/>
>>></port></service>
>>>
>>>Should I file a jira issue? This is confusing.
>>>
>>>Incidently, I'm seeing this EPR on the listServices.jsp - after making
>>>the change to services.xml to be:  'service name="SWAAutoDispatchService'
>>>
>>>"Available services
>>>SWAAutoDispatchService
>>>Service EPR : http://localhost:8080/axis2/services/SWAAutoDispatchService
>>>Service Description : null
>>>Available operations
>>>
>>>    * webLogin "
>>>
>>>Yet I'm getting:
>>>
>>> [java] webLogin, firing...
>>>     [java] org.apache.axis2.AxisFault: org.apache.axis2.AxisFault:
>>>Operation Not found EPR is 
>>>http://localhost:8080/axis2/services/SWAAutoDispatchService and WSA
>>>Action =
>>>     [java] at
>>>org.apache.axis2.engine.DispatchingChecker.invoke(DispatchingChecker.java
>>>:70)
>>>
>>>Here's my client code - I'm kind of stuck:
>>>
>>>package com.siemens.swa.plugins.clients;
>>>
>>>import org.apache.axis2.AxisFault;
>>>
>>>import
>>>com.siemens.swa.plugins.webservices.types.SWAAutoDispatchEndpointStub;
>>>import
>>>com.siemens.swa.plugins.webservices.types.databinding.swaAutoDispatch.Web
>>>LoginElementDocument; import
>>>com.siemens.swa.plugins.webservices.types.databinding.swaAutoDispatch.Web
>>>LoginElementDocument.WebLoginElement;
>>>
>>>/**
>>> * Login.
>>> *
>>> */
>>>public class WiseLogin {
>>>
>>>    public static void main(String[] args) {
>>>        try {
>>>
>>>            System.out.println("webLogin, firing...");
>>>            SWAAutoDispatchEndpointStub stub =
>>>                new SWAAutoDispatchEndpointStub(null,
>>>                    "
>>>http://localhost:8080/axis2/services/SWAAutoDispatchService");
>>>
>>>            WebLoginElementDocument webLoginElementDocument
>>>                = WebLoginElementDocument.Factory.newInstance();
>>>            WebLoginElement webLoginElement =
>>>                WebLoginElement.Factory.newInstance();
>>>            webLoginElement.setUserNameElement("joe");
>>>            webLoginElement.setUserPasswordElement("sixpack");
>>>            webLoginElementDocument.setWebLoginElement(webLoginElement);
>>>            stub.webLogin(webLoginElementDocument);
>>>            System.out.println("dispatch, completed!!!");
>>>
>>>        } catch (AxisFault axisFault) {
>>>            axisFault.printStackTrace();
>>>        } catch (Exception ex) {
>>>            ex.printStackTrace();
>>>        }
>>>    }
>>>
>>>}
>>>
>>>iksrazal
>>>
>>><?xml version="1.0" encoding="UTF-8"?>
>>>
>>><definitions name="SWAAutoDispatchService"
>>>targetNamespace="http://swaAutoDispatch"
>>>xmlns:tns="http://swaAutoDispatch"
>>>xmlns="http://schemas.xmlsoap.org/wsdl/"
>>>xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>>xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>>>xmlns:ns2="http://swaAutoDispatch/types">
>>>  <types>
>>>    <schema targetNamespace="http://swaAutoDispatch/types"
>>>xmlns:tns="http://swaAutoDispatch/types"
>>>xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/"
>>>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
>>>xmlns="http://www.w3.org/2001/XMLSchema">
>>>      <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
>>>      <complexType name="ReturnWebBase">
>>>        <sequence>
>>>          <element name="errorMessage" type="string"/>
>>>          <element name="successErrorCode"
>>>type="int"/></sequence></complexType>
>>>      <complexType name="ReturnWebLogin">
>>>        <complexContent>
>>>          <extension base="tns:ReturnWebBase">
>>>            <sequence>
>>>              <element name="SOAP_Session_id" type="string"/>
>>>              <element name="web_user_name"
>>>type="string"/></sequence></extension></complexContent></complexType>
>>>      <element name="webLoginElement">
>>>        <complexType>
>>>          <sequence>
>>>            <element ref="tns:user_nameElement"/>
>>>            <element ref="tns:user_passwordElement"/>
>>>          </sequence>
>>>        </complexType>
>>>      </element>
>>>      <element name="user_nameElement" type="xsd:string"/>
>>>      <element name="user_passwordElement" type="xsd:string"/>
>>>      <element name="ReturnWebLoginElement" type="ns2:ReturnWebLogin"/>
>>>      <element name="ReturnWebBaseElement" type="ns2:ReturnWebBase"/>
>>></schema></types>
>>>  <message name="SWAAutoDispatchEndpoint_webLogin">
>>>     <part name="parameters" element="ns2:webLoginElement"/>
>>>  </message>
>>>  <message name="SWAAutoDispatchEndpoint_webLoginResponse">
>>>    <part name="result" element="ns2:ReturnWebLoginElement"/>
>>>  </message>
>>>  <portType name="SWAAutoDispatchEndpoint">
>>>    <operation name="webLogin">
>>>      <input message="tns:SWAAutoDispatchEndpoint_webLogin"
>>>name="SWAAutoDispatchEndpoint_webLogin"/>
>>>      <output message="tns:SWAAutoDispatchEndpoint_webLoginResponse"
>>>name="SWAAutoDispatchEndpoint_webLoginResponse"/>
>>>    </operation>
>>>  </portType>
>>>  <binding name="SWAAutoDispatchEndpointBinding"
>>>type="tns:SWAAutoDispatchEndpoint">
>>>    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
>>>style="document"/>
>>>    <operation name="webLogin">
>>>      <soap:operation soapAction=""/>
>>>      <input name="SWAAutoDispatchEndpoint_webLogin">
>>>        <soap:body use="literal"/>
>>>      </input>
>>>      <output name="SWAAutoDispatchEndpoint_webLoginResponse">
>>>        <soap:body use="literal"/>
>>>      </output>
>>>    </operation>
>>>  </binding>
>>>  <service name="SWAAutoDispatchService">
>>>    <port name="SWAAutoDispatchEndpointPort"
>>>binding="tns:SWAAutoDispatchEndpointBinding">
>>>      <soap:address
>>>location="http://localhost:8080/axis2/services/SWAAutoDispatchEndpoint"/>
>>></port></service></definitions>
>>>
>>>Em Terça 29 Novembro 2005 01:57, o Deepal Jayasinghe escreveu:
>>>      
>>>
>>>>Hi Dong;
>>>>
>>>>I will tell you what actually happen inside
>>>>
>>>>  1. If the service archive file contains a services.xml with its root
>>>>tag being  <serviceGroup></serviceGroup> , then the name    of
the
>>>>service group will be the name of the archive file name (if the archive
>>>>name foo.aar then the group name will be foo).
>>>>
>>>>  2. If the services.xml is for a service group , then all the children
>>>>service elements must have a  name , simply  in <service
>>>>name="someName"> tag  the name attribute can not be null , as well as
>>>>that should be unique across the system
>>>>
>>>>  3. If the service archive file contains a service.xml with root
>>>>element being <service> </service> then the name of the service
will be
>>>>the name of the archive file , even if there is a name attribute that
>>>>will be ignored.
>>>>
>>>> 4. IF you have a WSDL file for a service then that wsdl file should
>>>>contain a <service> element and then name of the service element should
>>>>equal to the name of the service that refers , as an example if you
>>>>have a <service name="fooService"> in services.xml then there should
be
>>>>service element in wsdl file as follow
>>>>  <wsdl:service name="fooService">
>>>>      <wsdl:port binding="impl:fooServiceBinding" name="fooService">
>>>>       <wsdlsoap:address
>>>>location="http://localhost:8080/axis/services/fooService" />
>>>>  </wsdl:port>
>>>></wsdl:service>
>>>>
>>>>5. It should note that the name of the wsdl file really does not matter
>>>>if you have the right service element in the wsdl file , if your
>>>>archive file is for a service group you can put any number of wsdl
>>>>files in META-INF directory with right references.
>>>>
>>>>
>>>>
>>>>Thanks,
>>>> Deepal
>>>>................................................................
>>>>~Future is Open~
>>>>
>>>>----- Original Message -----
>>>>From: "Dong Liu" <edongliu@gmail.com>
>>>>To: <axis-dev@ws.apache.org>
>>>>Sent: Tuesday, November 29, 2005 6:17 AM
>>>>Subject: [axis2]Questions on service name
>>>>
>>>>
>>>>Hi, developers,
>>>>
>>>>On axis 2, three files are related to a service: the services.xml, the
>>>>.wsdl file, and the deployment package .aar file. I found there would
>>>>be multiple services appearing on the listServices page if the name of
>>>>the .aar package, the service name in wsdl file and that in
>>>>services.xml are different. And there would be conflicting endpoint
>>>>references for the same service. Is naming the service names in the
>>>>three places the only way to avoid such conflict?
>>>>
>>>>Cheers,
>>>>
>>>>Don
>>>>        
>>>>
>
>  
>


Mime
View raw message