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 Sat, 17 Mar 2007 02:53:46 GMT
Hi Dims, thanks and please let us know your thoughts.  I 'll be glad to 
implement what is needed if you have a better solution or not.:)

Lin

Davanum Srinivas wrote:
> Lin,
> 
> There may be a way around it...i need to re-read this entire thread.
> will do later today.
> 
> thanks,
> dims
> 
> On 3/16/07, Lin Sun <linsun.unc@gmail.com> wrote:
>> Hi, thanks everyone for their input!  I really like this list - it is
>> very friendly! :-)
>>
>> Jeff, I'd be happy to do it... a bit booked today but I should be able
>> to come up with a patch soon to handle the 2nd case where wsdlLocation
>> is specified in webservice annotation.
>>
>> As for the first case (when wsdl file doesn't exist), my understanding
>> is that Axis2 doesn't have such a tool with JAX-WS features.  This is a
>> big feature, not just a bug.:-(   The Java2WSDL tool is the only tool
>> that I am aware of in Axis2 and it doesn't do annotation.    That's the
>> only reason why I propose to use the wsgen tool provided by sun.
>>
>> Lin
>>
>>
>> Jeff Genender wrote:
>> > Yup...filling in the PortInfo map with some of the WebService 
>> annotation
>> > info (minimally the wsdl location) should get us past this issue.
>> >
>> > If Lin doesn't do it I may give it a SWAG this morning.
>> >
>> > Jeff
>> >
>> > Jarek Gawor wrote:
>> >> If Axis2 has a tool to generate WSDL from Java code (with annotations)
>> >> then we should definitely used that. Hopefully, it also has good
>> >> programmatic API so that we can call it at runtime (or at deployment
>> >> time) and generate the WSDL dynamically to a file or a byte array or
>> >> whatever. In G we would just check if the @WebService annotation has
>> >> wsdlLocation attribute set (there is a bit of logic to that) and call
>> >> that tool only if it is not. I don't think we should do anything more
>> >> then that in G. That is, I don't think we should write any code in G
>> >> to generate WSDL from Java code.
>> >>
>> >> Jarek
>> >>
>> >> On 3/15/07, Lasantha Ranaweera <lasantha@opensource.lk> wrote:
>> >>> 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