users@jax-ws.java.net

RE: Re: Invoking a .NET web service using JAX-WS 2.0

From: Ryan LeCompte <Ryan.LeCompte_at_pangonetworks.com>
Date: Tue, 22 Aug 2006 10:32:00 -0400

Sorry, just one more thing. I should also mention that I was able to successfully invoke the same problematic operation on an endpoint that was built using JWSDP 1.6. So this really seems to be a .NET specific issue.
 
Thanks!
 
Ryan

________________________________

From: Ryan LeCompte
Sent: Tue 8/22/2006 10:24 AM
To: users_at_jax-ws.dev.java.net
Cc: dev_at_jax-ws.dev.java.net
Subject: RE: Re: Invoking a .NET web service using JAX-WS 2.0


Okay, I have some more information from further testing this morning. I actually used Netbeans 5.5. to auto-generate a web service client from the auto-generated .NET WSDL file (http://service/service.asmx?WSDL), and I tried invoking various methods on it. I was able to invoke one method on the .NET web service and get a response (which I could do previously), HOWEVER I'm not able to invoke another operation which looks like the following:
 
handle(Type)
 
Where in the WSDL, there are sub-types of Type, such as TypeA, and TypeB. I'm actually invoking the service with the JAX-WS client as handle(TypeA), however I'm not seeing that operation get invoked on the .NET side of the communication. THere are no exceptions/errors generated on the JAX-WS 2.0 side, either. Does this mean that JAX-WS has problems invoking .NET web services where the complex types are polymorphic? JWSDP 1.5/1.6 handled this exact same scenario without any trouble. Note that my custom WSDL hasn't changed from when I had it working on JWSDP and now trying with JAX-WS.
 
To be more concrete, here's a WSDL snippet that demonstrates:
 
         <xsd:complexType name="Base" abstract="true">
            <xsd:sequence>
               <xsd:element name="someAttribute" type="xsd:int" minOccurs="1" maxOccurs="1"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:complexType name="SubA">
            <xsd:complexContent>
               <xsd:extension base="tns:Base">
                  <xsd:sequence>
                     <xsd:element name="someOtherAttribute" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                  </xsd:sequence>
               </xsd:extension>
            </xsd:complexContent>
         </xsd:complexType>
         <xsd:complexType name="SubB">
            <xsd:complexContent>
               <xsd:extension base="tns:Base">
                  <xsd:sequence>
                     <xsd:element name="otherAttribute" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                  </xsd:sequence>
               </xsd:extension>
            </xsd:complexContent>
         </xsd:complexType>
          <xsd:complexType name="operationRequest">
             <xsd:sequence>
                 <xsd:element name="values" type="tns:Base" minOccurs="1" maxOccurs="unbounded"/>
             </xsd:sequence>
         </xsd:complexType>
 
It would be nice to hear if someone else can reproduce this problem, or provide a suggestion?
 
Thanks!
 
Ryan

________________________________

From: Ryan LeCompte
Sent: Mon 8/21/2006 8:07 PM
To: users_at_jax-ws.dev.java.net; users_at_jax-ws.dev.java.net
Subject: RE: Re: Invoking a .NET web service using JAX-WS 2.0


Hi Rick,
 
Thanks for the suggestions. In the past, my approach to web services has always been to hand-write a WSDL describing the service, and then feed this same WSDL into both JWSDP and .NET. This has worked superbly over the past couple of years. Even though .NET generated its own WSDL, the JWSDP (1.6) had no problems communicating with the service. I'm going to investigate this further tomorrow, but I'm not sure why JAX-WS 2.0 used in the same manner would have any trouble.
 
Ryan

________________________________

From: Rick Jones [mailto:rick_at_activeservice.co.uk]
Sent: Mon 8/21/2006 6:06 PM
To: users_at_jax-ws.dev.java.net
Subject: Re: Invoking a .NET web service using JAX-WS 2.0



My suggestion would be to feed the WSDL generated by .Net into wsimport to
generate the client stub code. That way you should guarantee an exact
match. It's the only technique I've ever used to call .Net services, and I
haven't run into any problems.

That said I haven't got very far with JAX-WS 2 clients because of
completely unrelated problems getting it to run in my target environment (a
configurable applet) where 1.x ran fine, so maybe there are gotchas that I
haven't hit yet :-/

HTH

Rick Jones

--On 21 August 2006 16:40 -0400 Ryan LeCompte
<Ryan.LeCompte_at_pangonetworks.com> wrote:

¦ I just finished converting one of my web services from JWSDP 1.6 to
¦ JAX-WS 2.0, and I'm running into a bit of a problem. The actual service
¦ implementation is written in .NET, and the client is written using
¦ JAX-WS 2.0. The same client used to work fine with JWSDP 1.6, however
¦ I'm not seeing service operations go through with JAX-WS 2.0. My
¦ question is:
¦
¦ I know that JAX-WS 2.0 now accesses the WSDL remotely to determine which
¦ operations should be invoked (e.g., http://service/myservice.asmx?wsdl).
¦ By default, the .NET runtime auto-generates the WSDL at runtime when you
¦ use the ?wsdl extension in the URL. Could this be causing a problem? The
¦ interesting thing is that I don't see any errors on the Java side, and
¦ no errors in the log file on the .NET side. The data types involved are
¦ also polymorphic in nature (base type, sub-type, etc). This used to work
¦ fine in JWSDP 1.6. The only problem I can see is that the WSDL used to
¦ generated the client (in JAX-WS) is (slightly) different from the
¦ auto-generated WSDL when accessed as http://service/myservice.asmx?wsdl.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_jax-ws.dev.java.net
For additional commands, e-mail: users-help_at_jax-ws.dev.java.net