geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lasantha Ranaweera <lasan...@opensource.lk>
Subject Re: Questions for Axis2 folks re: JAXWS
Date Fri, 16 Mar 2007 03:26:54 GMT
Hi Lin,

I checked your email in the Axis2 dev list and I am also not sure 
whether this is a bug or a missing feature in the Axis2 (since I didn't 
go through the problem deep). If this is a bug we might able to help 
Axis2 source code too (as I did couple of times with my patches) ;-) . 
Make sure to cross link issues in JIRA in such situation. Otherwise as 
Jeff mentioned we might need to implement in the G side if the Axis2 
doesn't have any plans of support the feature soon.

Regarding your last part of reading annotations have a look at 
JAXWSUtils.java file comes in a org.apache.geronimo.jaxws package, I 
think it has a way of reading such annotations (line 86).

Thanks,
Lasantha

Lin Sun wrote:
> 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