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 <[EMAIL PROTECTED]> 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
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>
>>

Reply via email to