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 04:53:22 GMT
Hi Lin,

The service-ref override is in the web.xml from the client side.  The
service-ref can have a <port> <uri> tag that is supposed to override
what comes from the wsdl.

I was able to do the same as you, but when you have a client override,
thats when there are problems.

Thanks,

Jeff

Lin Sun wrote:
> I too messed around a bit and submitted patch in G2977.  I didn't quite
> get your note about serviceRef overrides tho (assuming your serviceRef
> means WebserviceRef).   My understanding is that WebserviceRef is for
> clients, we are trying to address a server side issue where a .wsdl file
> is provided but there is no reference to the .wsdl file in
> webservices.xml.   Instead, the location of the wsdl file is specified
> in the WebService or WebServiceProvider annotation.   I was able to test
> this by adding the wsdlLocation below to GreeterImpl.java:
> 
> @WebService(serviceName = "SOAPService",
>             portName = "SoapPort",
>             wsdlLocation = "WEB-INF/wsdl/greeter_control.wsdl",
>             endpointInterface = "org.apache.greeter_control.Greeter",
>             targetNamespace = "http://apache.org/greeter_control")
> 
> and making sure that wsdl-file is not set in webservices.xml in
> jaxws-war project.
> 
> Lin
> 
> Jeff Genender wrote:
>> 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