geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Genender <jgenen...@apache.org>
Subject Re: Questions for Axis2 folks re: JAXWS
Date Sat, 17 Mar 2007 00:33:35 GMT
I did some messing around with this, and it will definitely be a much
bigger job.  I allowed it to find the wsdl by setting the location.
This worked, but unfortunately it sent the WSDL verbatim without doing
the specific ServiceRef overrides.  So this is deeper in the Axis2
container I believe.

Jeff

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