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