geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lin Sun <linsun....@gmail.com>
Subject Re: Questions for Axis2 folks re: JAXWS
Date Thu, 15 Mar 2007 18:09:35 GMT
Hi Jeff,

Yes I totally agree that the tool needs to be for axis2 only and handled 
during deployment time!  Basically, during deployment of the module, 
we'll invoke the tool on the fly and generate the .wsdl file for the 
user, and set the PortInfo's wsdlLocation property.  Then the code will 
be executed as if the .wsdl is provided by the user, which we know works 
right now.   I was just trying to run the tool stand-alone first to make 
sure it is good for our need.:-)  I'll investigate if there is any 
license issue.

Also, this doesn't cover the second scenario, when .wsdl file is 
provided  but the location of the .wsdl file is specified in annotation 
but not in webservices.xml.   In this case, we 'll need to figure out 
the location of the .wsdl file from annotation (not sure how to do that 
yet) and set the PortInfo's wsdlLocation property.

Thanks,

Lin

Jeff Genender wrote:
> I think this is supposed to happen on deployment, not from a tool.  If
> Axis is not going to handle this, then this code will need to be written
> in the Axis2 deployer for Geronimo.  Currently CXF does handle
> Webservice annotations, so this type of deployment code would be an
> Axis2 only necessity.  I think the PortInfo objects will need to be
> filled out before handing off to Axis2.
> 
> Jeff
> 
> 
> Lin Sun wrote:
>> Hi Jeff/Lasantha,
>>
>> I just posted this prob on axis2-dev list [1].   Currently the Java2WSDL
>> tool which is what is being used to generate the targetnamespace doesn't
>> seem to handle any of the annotation stuff... not sure if it will ever
>> handle.:-(
>>
>> An alternative is to use the sun's wsgen tool provided by
>> jaxws-tools.jar to generate the wsdl file from Java in the geronimo
>> integration code.  I tried to use the tool and it did generate the
>> targetnamespace correctly.
>>
>> [1]: http://marc.theaimsgroup.com/?l=axis-dev&m=117397929613538&w=2
>>
>> Lin
>>
>> Jeff Genender wrote:
>>> Lasantha Ranaweera wrote:
>>>> Not exactly sure whether I am getting your problem exactly or not  :-( .
>>>>
>>>> Line 99 decides whether application archive contains WSDL file or not
>>>> (according to Axis2 builder). If it is there we are going to fill WSDL
>>>> information from G side. Otherwise it will be handed over to Axis2 side
>>>> (services with annotations). So looking at your problem regarding
>>>> annotations what I say is it should be handled by Axis2 (all the
>>>> validation & execution stuff). The annotation processing will be handled
>>>> as a web service receives SOAP requests. Starting point for JAXWS based
>>>> SOAP messages is receive() method of JAXWSMessageReciever.
>>>>
>>> The problem is, Axis2 is generating a wsdl upon the client request for a
>>> wsdl, and not looking at the WebService annotation to get the wsdl's
>>> location.  The code step through below shows the problem clearly.
>>>
>>>
>>>> HTH.
>>>>
>>>> Lasantha
>>>>
>>>> Jeff Genender wrote:
>>>>> o.a.g.Axis2WebserviceContainer, line 99. A not-filled in PortInfo is
>>>>> passed in since G is not processing a WebService annotation, and
>>>>> thus an
>>>>> AxisService.create is called on line 104.
>>>>>
>>>>> When Axis2WebserviceContainer.getWsdl() is ultimately called,
>>>>> doService2() is called (line 212), then to processGetRequest (line
>>>>> 398),
>>>>> leading us to line 435 where the PortInfo is checked as to whether a
>>>>> wsdl file has been passed in or not.  If it has, it spits out the wsdl.
>>>>>  If it has not, then the AxisService.printWsdl() is called and that
>>>>> call
>>>>> spits out a generated wsdl.
>>>>>
>>>>> The crux here is that the PortInfo object does not have all of the info
>>>>> filled in such as seiClass, wsdl file, etc.  That stuff would have been
>>>>> gotten from examining the WebService annotation.
>>>>>
>>>>> The question is, where does that examination or, should that
>>>>> examination, take place? Geronimo or Axis2?
>>>>>
>>>>> Jeff
>>>>>
>>>>> Lasantha Ranaweera wrote:
>>>>>  
>>>>>> Jeff,
>>>>>>
>>>>>> Sorry for a late reply due to my time stamp difference and don't
know
>>>>>> exactly you have solved this problem right now or not. Anyway here
>>>>>> is my
>>>>>> comment.
>>>>>>
>>>>>> Since you haven't given me exact source code I won't be able to point
>>>>>> you in to the exact source code in the Axis2. May be remote debugging
>>>>>> ...  ;-) .
>>>>>>
>>>>>> Thanks,
>>>>>> Lasantha
>>>>>>
>>>>>> Jeff Genender wrote:
>>>>>>   
>>>>>>> Ok...
>>>>>>>
>>>>>>> I am pretty certain at this stage that the WebService annotation
>>>>>>> is not
>>>>>>> getting processed.  Can you point me to the code that handles
this in
>>>>>>> Axis2?
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> Jeff
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Jeff Genender wrote:
>>>>>>>  
>>>>>>>     
>>>>>>>> Thanks...this is very helpful.
>>>>>>>>
>>>>>>>> Then by this, looking at the PortInfo, it appears as though
it is
>>>>>>>> not
>>>>>>>> stuffing in the WSDL file, which tells me it's a G thang
;-)
>>>>>>>>
>>>>>>>> Jeff
>>>>>>>>
>>>>>>>> Lasantha Ranaweera wrote:
>>>>>>>>          
>>>>>>>>> Hi Jeff,
>>>>>>>>>
>>>>>>>>> To my understanding if we have given a WSDL in an archive
it
>>>>>>>>> should get
>>>>>>>>> the priority than the information in the annotations.
>>>>>>>>>
>>>>>>>>> In Axis2 integration there are two parts of implementation
with
>>>>>>>>> one for
>>>>>>>>> with WSDL which is mainly handling by G side while with
annotations
>>>>>>>>> from
>>>>>>>>> Axis2. For me it is something missing in G side.
>>>>>>>>>
>>>>>>>>> Somebody in the list please correct me  if I am wrong
here .
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Lasantha
>>>>>>>>> Jeff Genender wrote:
>>>>>>>>>              
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> I have noticed when I deploy a war file (with a WSDL),
I have a
>>>>>>>>>> certain
>>>>>>>>>> target name specified both in the WSDL and in the
code that uses a
>>>>>>>>>> WebService annotation.
>>>>>>>>>>
>>>>>>>>>> However, when I go retrieve the WSDL, I notice the
target name
>>>>>>>>>> seems to
>>>>>>>>>> be munged according to the package name (backwards)
of the code
>>>>>>>>>> that
>>>>>>>>>> contains the WebService annotation.
>>>>>>>>>>
>>>>>>>>>> Example...
>>>>>>>>>>
>>>>>>>>>> I have include a WSDL called Hello.wsdl that is in
the war file
>>>>>>>>>> in the
>>>>>>>>>> web-inf/wsdl directory and starts with:
>>>>>>>>>>
>>>>>>>>>> <wsdl:definitions targetNamespace="http://example.com/hello/xsd">
>>>>>>>>>> ...
>>>>>>>>>>
>>>>>>>>>> I have a HelloWorld.java that has this:
>>>>>>>>>>
>>>>>>>>>> package test.mypackage;
>>>>>>>>>>
>>>>>>>>>> import javax.jws.WebMethod;
>>>>>>>>>> import javax.jws.WebService;
>>>>>>>>>>
>>>>>>>>>> @WebService(name="HelloWorld", targetNamespace =
>>>>>>>>>> "http://example.org/hello/xsd")
>>>>>>>>>> public class HelloWorld {
>>>>>>>>>>
>>>>>>>>>>     @WebMethod
>>>>>>>>>>     public String sayHello(String me){
>>>>>>>>>>         return "Hello "+me;
>>>>>>>>>>     }
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> However, when I request the wsdl...I get something
like this:
>>>>>>>>>>
>>>>>>>>>> <wsdl:definitions targetNamespace="http://mypackage.test/xsd">
>>>>>>>>>> ...
>>>>>>>>>>
>>>>>>>>>> Notice the targetnamespace was munged and changed
from it's
>>>>>>>>>> originally
>>>>>>>>>> declared namespace of "http://example.com/hello/xsd".
 I want the
>>>>>>>>>> one
>>>>>>>>>> that is both declared in the included wsdl (or the
one declared
>>>>>>>>>> in the
>>>>>>>>>> annotation).
>>>>>>>>>>
>>>>>>>>>> Is this a facet of Axis2 or is Geronimo not passing
a proper
>>>>>>>>>> PortInfo
>>>>>>>>>> object with the necessary stuff filled in?
>>>>>>>>>>
>>>>>>>>>> Any light on this subject would be greatly appreciated
;-)
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>>
>>>>>>>>>> Jeff
>>>>>>>>>>
>>>>>>>>>>                       
>>>>>>>         
>>>>>   
> 


Mime
View raw message