You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by James Gough <wh...@gmail.com> on 2006/05/10 02:51:24 UTC

WSE 817 error - bad wsdl or just newbie stupidity?

I am very new to Axis and web services in general.  I am writing a 
client for a .NET-based web service using the Axis WSDL2Java generator 
to create my client.  Once I compiled the resulting code and set up a 
test program for a very small part of the client, I ran it and got this:

Destination Unreachable --> WSE817: The &lt;To&gt; header must match the 
Actor attribute on this receiver. The &lt;To&gt; header contained 
&quot;https://ws.somedomain.com/webservices/engine.asmx&quot; whereas 
the Actor attribute was &quot;urn:AWordICannotFindAnywhereInMyCode&quot;.

So I looked into the wsdl file and the location attribute of the soap 
tag is "https://ws.somedomain.com/webservices/engine.asmx", but the 
soapAction attribute of the operation I want to use is 
"http://somedomain.com/MinorAction".  Like I said, I am new to this, and 
I have access to the guys who set up this wsdl, but prefer to have a 
better Idea of what my problem is before I ask for help from them.  I 
should add that they have a .NET client for this that does work (my 
application is in Java so I'd prefer to use Axis).

Anybody?


Re: WSE 817 error - bad wsdl or just newbie stupidity?

Posted by James Gough <wh...@gmail.com>.
Thanks, Anne. 


I'm wondering if there is a way on the client side to signal to the 
server that you want it to use the Action in the body of the SOAP 
message and ignore the SOAP Actor in the headers?


Jim



Anne Thomas Manes wrote:
Wed, 10 May 2006 06:06:02 -0700

So you should tell the folks that built the service that they should 
define a more reasonable Actor attribute. To make it easier for 
consumers, the Actor attribute should be the same as the service 
endpoint URL.

The wsa:To value specifies the "destination" property, which is a URI 
that represents the Actor to whom the request is targeted -- not the 
physical location of the service. (The physical location may change, 
after all.)

Based on your error message, you should specify the destination property 
as "urn:AWordICannotFindAnywhereInMyCode".

Anne

Re: WSE 817 error - bad wsdl or just newbie stupidity?

Posted by James Gough <wh...@gmail.com>.
I was able to solve this by adding in a SOAP Header for the "To:" that 
they were looking for (I was lucky enough to have a working .NET 
example, so basically I just mimicked the xml produced by that 
application as best I could).  Of course now I get a 400 error, but 
there's alot more to send them so I am unstuck by this error anyway.

Code to add the "To:" header:

          org.apache.axis.message.SOAPHeaderElement element = new 
org.apache.axis.message.SOAPHeaderElement("http://schemas.xmlsoap.org/ws/2004/03/addressing", 
"To");
          element.setPrefix("wsa");
          element.setAttribute("wsu:Id", "Id-" + idGenerator.nextUUID());
          element.setObjectValue("urn:AWordICannotFindAnywhereInMyCode");
          _call.addHeader(element);

Jim


Anne Thomas Manes wrote:
> So you should tell the folks that built the service that they should 
> define a more reasonable Actor attribute. To make it easier for 
> consumers, the Actor attribute should be the same as the service 
> endpoint URL.
>
> The wsa:To value specifies the "destination" property, which is a URI 
> that represents the Actor to whom the request is targeted -- not the 
> physical location of the service. (The physical location may change, 
> after all.)
>
> Based on your error message, you should specify the destination 
> property as "urn:AWordICannotFindAnywhereInMyCode".
>
> Anne


Re: WSE 817 error - bad wsdl or just newbie stupidity?

Posted by Anne Thomas Manes <at...@gmail.com>.
So you should tell the folks that built the service that they should define
a more reasonable Actor attribute. To make it easier for consumers, the
Actor attribute should be the same as the service endpoint URL.

The wsa:To value specifies the "destination" property, which is a URI that
represents the Actor to whom the request is targeted -- not the physical
location of the service. (The physical location may change, after all.)

Based on your error message, you should specify the destination property as
"urn:AWordICannotFindAnywhereInMyCode".

Anne

On 5/9/06, James Gough <wh...@gmail.com> wrote:
>
> I am very new to Axis and web services in general.  I am writing a
> client for a .NET-based web service using the Axis WSDL2Java generator
> to create my client.  Once I compiled the resulting code and set up a
> test program for a very small part of the client, I ran it and got this:
>
> Destination Unreachable --> WSE817: The &lt;To&gt; header must match the
> Actor attribute on this receiver. The &lt;To&gt; header contained
> &quot;https://ws.somedomain.com/webservices/engine.asmx&quot; whereas
> the Actor attribute was &quot;urn:AWordICannotFindAnywhereInMyCode&quot;.
>
> So I looked into the wsdl file and the location attribute of the soap
> tag is "https://ws.somedomain.com/webservices/engine.asmx", but the
> soapAction attribute of the operation I want to use is
> "http://somedomain.com/MinorAction".  Like I said, I am new to this, and
> I have access to the guys who set up this wsdl, but prefer to have a
> better Idea of what my problem is before I ask for help from them.  I
> should add that they have a .NET client for this that does work (my
> application is in Java so I'd prefer to use Axis).
>
> Anybody?
>
>

[Axis 1.4] WSDL2Java - is there a way to generate code that transmits WSE 2.0 requests?

Posted by James Gough <wh...@gmail.com>.
I'm having issues trying to connect a client generated by Axis's 
WSDL2Java to an existing .Net-based Web Service.   Some of my research 
indicates that this may be due to the fact that I am sending WSE 3.0 
requests to a WSE 2.0 service.  Is there a way to have Axis 1.4 create 
code that sends 2.0 requests?  And if not, what version should I be 
using to generate 2.0 requests?