dev@jax-ws.java.net

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

From: Ryan LeCompte <Ryan.LeCompte_at_pangonetworks.com>
Date: Wed, 23 Aug 2006 09:24:29 -0400

Hello Vivek,
 
I tried the latest nightly of JAXWS 2.0 RI as you indicated, however the problem still remains. The .NET endpoint still doesn't get its one-way operation invoked.
 
I then tried the JAXWS 2.0.1 M1 release as you suggested, however now I'm seeing a different problem when I attempt to invoke the one-way operation with the JAXWS client.
The following exception is thrown when the operation is invoked:
 
 
java.lang.RuntimeException: javax.xml.ws.WebServiceException: No Content-Type in the header!
        at com.example.ExampleStub.foo(ExampleStub.java:73)

I didn't change anything in the .NET 2.0 endpoint implementation.
 
Please let me know if there is something else you'd like me to try.
 
Regards,
Ryan
________________________________

From: Vivek Pandey [mailto:Vivek.Pandey_at_Sun.COM]
Sent: Tue 8/22/2006 4:32 PM
To: Ryan LeCompte
Subject: Re: Invoking a .NET web service using JAX-WS 2.0



hi Ryan,

I have not got a chance to look at it. But will sure get back to you as
soon as I see whats going on. Can you try the latest nightly of JAXWS
2.0 RI from:

https://jax-ws.dev.java.net/servlets/ProjectDocumentList?folderID=5471&expandFolder=5471&folderID=5471


If it doesn't work you may like to try JAXWS 2.0.1 M1 release we made
last week. Apart from performance it has fixes to better interoperate
with .NET 3.0 or Indigo.

thnaks,
-vivek.
Ryan LeCompte wrote:
> (offline)
>
> Vivek,
>
> Please let me know if there is any particular patch or scenario that
> you would like me to try. I'm open to any suggestions that you may have.
> In case I didn't mention it, I'm using JAX-WS 2.0 RI (not the latest
> milestone that you recently release, but the FCS version), and I've
> tested this
> with .NET 1.1 as well as .NET 2.0.
>
> Thanks,
> Ryan
>
> ------------------------------------------------------------------------
> *From:* Ryan LeCompte
> *Sent:* Tue 8/22/2006 1:17 PM
> *To:* dev_at_jax-ws.dev.java.net; 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
>
> Hi Vivek,
>
> Yes, the problem I'm facing is that the .NET endpoint is not having
> its operation invoked. Please let me know if I can provide any further
> information.
>
> Thanks,
> Ryan
>
> ------------------------------------------------------------------------
> *From:* Vivek Pandey [mailto:Vivek.Pandey_at_Sun.COM]
> *Sent:* Tue 8/22/2006 12:28 PM
> *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
>
> Ryan LeCompte wrote:
> > Hi Vivek,
> >
> > Yes, this is a one-way operation. Here is a complete example schema
> > that illustrates the problem:
> >
> As far as nothing happening on the client side is understandable as its
> one-way and so there is no return value. I guess the problem you're
> facing is that the .NET endpoint's one-way operation is not invoked, is
> this right?
>
> -vivek.
> > <?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
> >
>
> ---------------------------------------------------------------------
> 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
>