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



Reply via email to