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 11:43:03 -0400

Hi Vivek,
 
Yes, this is a one-way operation. Here is a complete example schema that illustrates the problem:
 
<?xml version="1.0" encoding="UTF-8"?>
<!--
Example WSDL.
-->
<wsdl:definitions name="Example"
   targetNamespace="http://www.company.com/services/Example"
   xmlns:tns="http://www.company.com/services/Example"
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   
     <wsdl:types>
      <xsd:schema
         targetNamespace="http://www.company.com/services/Example"
         xmlns:tns="http://www.company.com/services/Example">
         <xsd:complexType name="Base" abstract="true">
            <xsd:sequence>
               <xsd:element name="attributeOne" type="xsd:int" minOccurs="1" maxOccurs="1"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:complexType name="SubOne">
            <xsd:complexContent>
               <xsd:extension base="tns:Base">
                  <xsd:sequence>
                      <xsd:element name="attributeTwo" type="xsd:int" minOccurs="1" maxOccurs="1"/>
                  </xsd:sequence>
               </xsd:extension>
            </xsd:complexContent>
         </xsd:complexType>
         <xsd:complexType name="SubTwo">
            <xsd:complexContent>
               <xsd:extension base="tns:Base">
                  <xsd:sequence>
                     <xsd:element name="attributeThree" type="xsd:int" minOccurs="1" maxOccurs="1"/>
                  </xsd:sequence>
               </xsd:extension>
            </xsd:complexContent>
         </xsd:complexType>
          <xsd:complexType name="fooRequest">
             <xsd:sequence>
                 <xsd:element name="values" type="tns:Base" minOccurs="1" maxOccurs="unbounded"/>
             </xsd:sequence>
         </xsd:complexType>
          <xsd:element name="foo" type="tns:fooRequest"/>
      </xsd:schema>
   </wsdl:types>
   <wsdl:message name="Example_fooRequest">
           <wsdl:part name="parameters" element="tns:foo"/>
   </wsdl:message>
   <wsdl:portType name="ExamplePortType">
      <wsdl:operation name="foo">
         <wsdl:input message="tns:Example_fooRequest"/>
      </wsdl:operation>
   </wsdl:portType>
   
   <wsdl:binding name="ExampleBinding" type="tns:ExamplePortType">
      <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
        <wsdl:operation name="foo">
         <soap:operation soapAction="Example/foo"/>
         <wsdl:input>
            <soap:body use="literal"/>
         </wsdl:input>
      </wsdl:operation>
   </wsdl:binding>
   <wsdl:service name="Example">
      <wsdl:port name="ExamplePort" binding="tns:ExampleBinding">
         <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
      </wsdl:port>
   </wsdl:service>
</wsdl:definitions>

________________________________

From: Vivek Pandey [mailto:Vivek.Pandey_at_Sun.COM]
Sent: Tue 8/22/2006 10:59 AM
To: users_at_jax-ws.dev.java.net
Cc: dev_at_jax-ws.dev.java.net
Subject: Re: Invoking a .NET web service using JAX-WS 2.0



Hi Ryan,

Looking at the schema types its not obvious what might be going on at
.NET side. Is it possible that this operation is one-way? A complete
WSDL and schema will help see whats going on.

thnaks,

-vivek.
Ryan LeCompte wrote:
> 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
>

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