Hi Alain/Ramesh,
 
The wsdlLocation points to the location of our wsdl within our
deployment jar file. Without it I think Axis2 will either try to
generate its own wsdl or possibly just fail.
 
Philip

________________________________

From: Drolet, Alain (CAR:QT12) 
Sent: Monday, April 20, 2009 1:01 PM
To: [email protected]
Subject: Re: Message Receiver not found for AxisOperation error with
Axis2 1.4.1 and service built using JAX-WS


Hi Ramesh

You cannot deploy a war file in axis2.

war are for web container like Tomcat, or JBossAS...
If you like war files you can deploy them in Tomcat, but then use 
the Glassfish Metro SOAP stack (instead of the axis2 one).

Tomcat by itself (alone) cannot do SOAP.

If you deploy as a jar file in axis2 servicesjar, then the attribute of
the @WebService
are very important.

I make my service work by specifying the following attribute.
  endpointInterface
  targetNamespace
  wsdlLocation // not sure if it is useful
  serviceName
  portName

Make sure they match what you specified in your wsdl file.
Search the web to find the documentation on  the @WebService attributes.

To invoke the client, you use the class generated by wsimport.
This should be the class with the same name as your serviceName
attribute.

You need to specify a QName. Its built from the attributes above,
and a URL. If you get it wrong the axis2 web page, or the error text you
receive should help you.

As for examples get the bin distribution of axis2. 
It has a nice set of jaxws examples in its samples directory.

Good luck
Alain



Ramesh Vishwanatham wrote: 


        Hi Alain 
        Thanks for clarifying the axis2 depliyment. I will take a look
JAXWSDeployer class. The axis2 behaviour is different with war and aar.
Below Implementation class deployed as war (services.xml is included) is
successful with tomcat: 
        
        @WebService(endpointInterface = "service.Prj71", 
                serviceName = "Prj71Service",
wsdlLocation="META-INF/Prj71Service.wsdl") 
        public class Prj71Impl implements Prj71 { 
        ... 
        } 
        
        Same failed to deploy with jar with stand alone. When I added
portName attribute, then it deployed fine. Still I am having problems
with client invocation. 
        
        I will try to figure it out. 
        
        Regards, 
        Ramesh 
        
        
        
        
        
"Alain Drolet" <[email protected]> <mailto:[email protected]>  

04/17/2009 05:17 PM 
Please respond to
[email protected]


To
[email protected]         
cc

        
Subject
Re: Message Receiver not found for AxisOperation error with Axis2 1.4.1
and service built using JAX-WS  


        
        



        Hi Ramesh 
        
        The two options I mentioned have nothing to do with the way you
run axis2. 
        It can run it stand alone, or deployed as a war in tomcat. 
        
        Once you have a running axis2 you can then deploy your jar or
aar file in the appropriate directory under axis2. 
        If you downloaded the axis2 source, you can pick at the
org.apache.axis2.jaxws.framework.JAXWSDeployer class. 
        Its quite instructive. This is where I realized that
services.xml and jar/servicejars do not mix. 
        
        Deploying as a aar file might work, if you figure out all the
details of the services.xml file. Good luck! 
        An example would be nice. 
        Reading various sites I'm picking that the axis2 developers
implemented the jaxws support in a silo aside 
        the other models they were already supporting. 
        This is why I think it is an either-or thing. 
        
        If you are happy with simple pojo, then aar might be just fine. 
        If you go all the way with the wsdl to java approach using
wsimport, then my feeling is that 
        the aar approach is no longer for you. You need to go the jar
way, which I suspect was designed explicitly for jaxws. 
        
        If any one can share input on the history and purpose of aar vs
jar it would be nice. 
        For now its looking like two ship cruising in the dark! 
        
        Regards Alain 
        
        Ramesh Vishwanatham wrote: 
        Hi Alain 
        
        Thanks for quick response. 
        
         My understanding is, you deploy "jar" file (without
services.xml) in servicejars directory under axis2 distribution  and run
axis2server.bat and not under tomcat. 
        
        Use "aar" deployment (along with services.xml) with tomcat or
other application server. 
        
        Please correct if I am wrong. 
        
        You are 100% correct about "The guide however provides zero info
on how to do this" deploying aar along with services.xml. I was playing
different combinations and norrow it down to following: 
        
        a) service implementation is wrong, some thing is missing 
        or 
        b) services.xml is missing some thing 
        or 
        c) axis2 1.4.1 version has bugs reagrding deploying aar for
JAX-WS 
        
        I will try deploying jar with servicejars and see what happens. 
        
        But in real world, you write a wsdl (with policy and security
info) and deploy services under app server. I am trying to understand
axis2  with JAX-WS by wrting a simple service. 
        
        Regards, 
        Ramesh 
        
        
        
        
        
"Alain Drolet" <[email protected]> <mailto:[email protected]>    

04/17/2009 03:38 PM 
Please respond to 
[email protected] <mailto:[email protected]> 


To
[email protected] <mailto:[email protected]>        
cc

        
Subject
Re: Message Receiver not found for AxisOperation error with Axis2 1.4.1
and service built using JAX-WS  


        
        





        Hi Rameh 
        
        I have very limited time to answer to you. 
        Also I am not an axis2 guru, but I typically make it do what I
need if I fight for long enough. 
        
        Having said that here are a few quick pointers I can provide. 
        These are based on experience and what I think I know about
axis2 ways to do things. 
        Axis2 real gurus, feel free to correct me. 
        
        There is 2 general ways to deploy a web service in axis2: 
        
        - deploy as a jar file 
        That seems to be the natural approach provided by axis2 if you
build your project using the JAXWS programming model. 
        With this approach you generate code from the wsdl using
wsimport (not wsdl2java). 
        You package as a jar files (see the jaxws-guide). 
        You do not use a services.xml file. That makes you life easier. 
        You deploy in the servicejars directory. 
        This directory uses a different deployer class. 
        Look in the axis2 configuration file to learn more. 
        
        That's the approach I use. 
        
        - deploy as a aar file 
        That's for all the other programming models supported by axis2. 
        Here you build your archive the axis2 way. That's why its not a
war file. 
        You generate code using wsdl2java. That also produce a
services.xml file. 
        You deploy in the services directory. 
        
        In theory aar files can be used as well for JAXWS project. 
        The guide however provides zero info on how to do this. 
        For instance you need to specify the message receivers. 
        I just gave up and deploy as aar in servicejars - easy! 
        
        Hoping this helps 
        Alain 
        
        Ramesh Vishwanatham wrote:   
        
        Hi Axis2 Developers and Gurus 
        
        Recently I have sent  below request to "axis2-user" group and
did not get any responses at all. I am evalutaing axis2 and JAX-WS
programming model  and struck with simple sample application. I found
there is not much material out there like "how-to" step by step guild to
build web applications using axis2 and JAX-WS. I have read following
link "http://ws.apache.org/axis2/1_4_1/jaxws-guide.html";
<http://ws.apache.org/axis2/1_4_1/jaxws-guide.html>  and gives an
overall high level view but lacks details. 
        
        May be some thing is wrong with my implementation class and/or
services.xml file. Also there is a possibility there is bug in Axis2
1.4.1 for JAX-WS. 
        
        I am hoping some one will clarify this issue. 
        
        Thanks in Advance 
        Ramesh 
        
------------------------------------------------------------------------
------------------------------------------------------------------------
------------ 
        Hi All 
        
        I am getting below error when a client calls a web service
operation built using Axis2 1.4.1, Java 1.6, JAX-WS 
        and Tomcat 6.0.18: 
        
        [ERROR] Message Receiver not found for AxisOperation:
{http://service/ <http://service/> }getQuote 
        org.apache.axis2.AxisFault: Message Receiver not found for
AxisOperation: {http: 
        //service/}getQuote 
        
        Here are the steps followed: 
        
        1) Axis2 war file is deployed in Tomcat 6.0.18. 
        
        2) Using top-down model with existing wsdl. Generated server and
client side code using wsimport tool part of 
        Java 1.6. Added Java implementation class for interface and
deployed the service under services folder in axis2 
        WEB-INF.The service is deployed and it is active. 
        
        3) When I run the client I get an exception with above exception
message 
        
        4) I also built service using axis2 WSDL2Java tool (adb as data
binding) and deployed it. When I ran the 
        client (which is built using JAX-WS api) it works fine. 
        
        So the error is in service side with JAX-WS. Is it a bug in
axis2 1.4.1 implememtation or some thing I am missing? 
        
        Please help me resolve this issue. 
        
        Below are the service implementation class, services.xml and
wsdl files: 
        
        Prj71Impl.java 
        --------------- 
        package service; 
        import javax.jws.WebService; 
        import javax.xml.ws.BindingType; 
        import javax.xml.ws.soap.SOAPBinding; 
        
        
        @WebService(endpointInterface = "service.Prj71", 
              serviceName = "Prj71Service",
wsdlLocation="META-INF/Prj71Service.wsdl", portName= "Prj71Port") 
        public class Prj71Impl implements Prj71 { 
        
              public         GetQuoteResponse 
              getQuote(GetQuoteRequest req) { 
                      GetQuoteResponse res = new GetQuoteResponse(); 
                      res.setReturn(100); 
                      return res; 
              } 
        
        } 
        
        services.xml 
        ------------ 
        <?xml version="1.0" encoding="UTF-8"?> 
        <serviceGroup> 
          <service name="Prj71Service" scope="application"> 
              <messageReceiver> 
                  <messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-out";
<http://www.w3.org/2004/08/wsdl/in-out>  
        
class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/> 
              </messageReceiver> 
              <parameter
name="ServiceClass">service.Prj71Impl</parameter> 
              <parameter name="useOriginalwsdl">true</parameter> 
              <!-- Below entries are added but no difference in
resolving the problem --> 
              <parameter
name="modifyUserWSDLPortAddress">true</parameter> 
              <operation name="getQuote"
mep="http://www.w3.org/2004/08/wsdl/in-out";
<http://www.w3.org/2004/08/wsdl/in-out>  namespace="http://service/";
<http://service/> > 
                  <actionMapping>tns:getQuote</actionMapping> 
        
<outputActionMapping>http://service/Prj71/getQuoteResponse
<http://service/Prj71/getQuoteResponse> </outputActionMapping> 
              </operation> 
          </service> 
        </serviceGroup> 
        
        
        Prj7Service.wsdl 
        ----------------- 
        
        <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
        
        <wsdl:definitions  name="Prj71Service"
targetNamespace="http://service/"; <http://service/>  
              xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
<http://schemas.xmlsoap.org/wsdl/>  xmlns:tns="http://service/";
<http://service/>  
              xmlns:xsd="http://www.w3.org/2001/XMLSchema";
<http://www.w3.org/2001/XMLSchema>  
              xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
<http://schemas.xmlsoap.org/wsdl/soap/> > 
        <wsdl:types> 
          <xsd:schema> 
            <xsd:import namespace="http://service/"; <http://service/>
schemaLocation="Prj71Service_schema1.xsd"/> 
          </xsd:schema> 
        </wsdl:types> 
        <wsdl:message name="getQuoteRequest"> 
          <wsdl:part name="parameters" element="tns:GetQuoteRequest"/> 
        </wsdl:message> 
        <wsdl:message name="getQuoteResponse"> 
          <wsdl:part name="parameters" element="tns:GetQuoteResponse"/> 
        </wsdl:message> 
        <wsdl:portType name="Prj71"> 
          <wsdl:operation name="getQuote"> 
            <wsdl:input message="tns:getQuoteRequest"/> 
            <wsdl:output message="tns:getQuoteResponse"/> 
          </wsdl:operation> 
        </wsdl:portType> 
        <wsdl:binding name="Prj71PortBinding" type="tns:Prj71"> 
          <soap:binding transport="http://schemas.xmlsoap.org/soap/http";
<http://schemas.xmlsoap.org/soap/http>  style="document"/> 
          <wsdl:operation name="getQuote"> 
            <soap:operation soapAction="tns:getQuote"/> 
            <wsdl:input> 
              <soap:body use="literal"/> 
            </wsdl:input> 
            <wsdl:output> 
              <soap:body use="literal"/> 
            </wsdl:output> 
          </wsdl:operation> 
        </wsdl:binding> 
        <wsdl:service name="Prj71Service"> 
          <wsdl:port name="Prj71Port" binding="tns:Prj71PortBinding"> 
            <soap:address
location="http://localhost:8080/axis2/services/Prj71Service";
<http://localhost:8080/axis2/services/Prj71Service> /> 
          </wsdl:port> 
        </wsdl:service> 
        </wsdl:definitions> 
        
        Thanks 
        Ramesh 
        ________________________________________________________ 
        DTCC DISCLAIMER: This email and any files transmitted with it
are confidential and intended solely for the use of the individual or
entity to whom they are addressed. If you have received this email in
error, please notify us immediately and delete the email and any
attachments from your system. The recipient should check this email and
any attachments for the presence of viruses. The company accepts no
liability for any damage caused by any virus transmitted by this email.

        
        

Reply via email to