Dave,

 

It’s more difficult to tell without the complete WSDL (I’m assuming that somewhere in the deleted sections from the <binding> it indicates style=”rpc”), but…

 

I did notice that you have a namespace discrepancy between your WSDL input definition and your SOAP request.

 

The WSDL says that your input namespace should be "http://programName.companyName.com"

è       <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://programName.companyName.com" use="encoded" />

 

Meanwhile, your SOAP request uses xmlns:ns1="MyService"

 


From: Dave Jacobson [mailto:[EMAIL PROTECTED]
Sent: Saturday, May 29, 2004 1:08 PM
To: [EMAIL PROTECTED]
Subject: help with Axis fault

 

Hi,

 

OK, I've been working on this for...well, I'm embarrassed to say exactly how long, but, needless to say, I've been working on this for a while...

 

I'm a major newbie to the whole environment so my error is probably a basic one but one that I can nevertheless figure out.  I would be quite grateful to anyone who could assist...

 

Here's the deal:

 

I am just trying to create a test web service.  I have successfully run the userguide examples but I can't get my own web service to run.  I have a .jsp script on the client side that calls a web service.  The web service operation returns a string but I am getting an axis fault error message.  I think the problem has to do with the namespace.  I am only running this on localhost.  I wasn't sure what to put for the namespace.

 

I attached:

 

- tcpmon input and output

- client code

- wsdl file

 

If there are other things that would be helpful to include I would be glad to post additional info...

 

I ran tcpmon on the port that I deployed the web service.  I was running everything on port 8081 but to setup TCPMonitor I deployed the web service on port 8081 and then configured Tomcat to run on port 4200.  Then I target the browser to port 4200 and TCPMonitor redirects the web page to port 8081.  At least that is what I hope it is doing.

 

Here is the input as recorded by TCPMonitor:

 

POST /axis/services/MyService HTTP/1.0

Content-Type: text/xml; charset=utf-8

Accept: application/soap+xml, application/dime, multipart/related, text/*

User-Agent: Axis/1.1

Host: localhost

Cache-Control: no-cache

Pragma: no-cache

SOAPAction: ""

Content-Length: 558

 

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body>
  <ns1:testOperationName soapenv:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="MyService">
   <sMonth xsi:type="xsd:string">3</sMonth>
   <sYear xsi:type="xsd:string">2004</sYear>
   <sTimeZone xsi:type="xsd:string">EST</sTimeZone>
  </ns1:testOperationName>
 </soapenv:Body>
</soapenv:Envelope>

 

and here is the output as recorded by TCPMonitor:

 

HTTP/1.1 500 Internal Server Error

Content-Type: text/xml;charset=utf-8

Date: Sat, 29 May 2004 16:31:58 GMT

Server: Apache-Coyote/1.1

Connection: close

 

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body>
  <soapenv:Fault>
   <faultcode>soapenv:Server.userException</faultcode>
   <faultstring>java.lang.Exception</faultstring>
   <detail/>
  </soapenv:Fault>
 </soapenv:Body>
</soapenv:Envelope>

 

The client .jsp code looks like this:

 

<%@ page language="java" org.apache.axis.client.Call, org.apache.axis.client.Service, javax.xml.namespace.QName, org.apache.axis.AxisFault" %>
<%@ page import="java.util.*" %>

<%
String sRetrieve =  request.getParameter("retrieve");
String sReturn = "";
String sMonth = "3";
String sYear = "2004";

//This is the URL of the webservice on my PC
String sEndpoint = "
http://localhost:8081/axis/services/MyService";

 Service  service = new Service();
 Call     call    = (Call) service.createCall();

 

 call.removeAllParameters() ;
 call.setReturnType( org.apache.axis.Constants.XSD_STRING );
 call.setTargetEndpointAddress( new java.net.URL( sEndpoint ) );
 call.setOperationName(new QName("MyService", "testOperationName") );
 call.addParameter("sMonth", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
 call.addParameter("sYear", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
 call.addParameter("sTimeZone", org.apache.axis.Constants.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
 sReturn = (String) call.invoke( new Object[] { sMonth, sYear, "EST" } );
%>

 

Here is what the wsdl looks like at http://localhost:8081/axis/services/MyService?wsdl

 

  <?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions targetNamespace="
http://localhost/axis/services/MyService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost/axis/services/MyService" xmlns:intf="http://localhost/axis/services/MyService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="http://programName.companyName.com" xmlns:tns2="http://companyName.com" xmlns:tns3="http://functionName.companyName.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <wsdl:types>
- <schema targetNamespace="
http://programName.companyName.com" xmlns="http://www.w3.org/2001/XMLSchema">
  <import namespace="
http://schemas.xmlsoap.org/soap/encoding/" />
- <complexType name="ClassName">
- <sequence>
  <element name="BVariable" type="xsd:boolean" />
  </sequence>
  </complexType>
  </schema>
  </wsdl:types>
- <wsdl:message name="testOperationNameRequest">
  <wsdl:part name="p_selectedMonth" type="xsd:string" />
  <wsdl:part name="p_selectedYear" type="xsd:string" />
  <wsdl:part name="p_timeZone" type="xsd:string" />
  </wsdl:message>
- <wsdl:message name="testOperationNameResponse">
  <wsdl:part name="testOperationNameReturn" type="xsd:string" />
  </wsdl:message>
- <wsdl:operation name="testOperationName" parameterOrder="p_selectedMonth p_selectedYear p_timeZone">
  <wsdl:input message="impl:testOperationNameRequest" name="testOperationNameRequest" />
  <wsdl:output message="impl:testOperationNameResponse" name="testOperationNameResponse" />
  </wsdl:operation>
- <wsdl:operation name="testOperationName">
  <wsdlsoap:operation soapAction="" />
- <wsdl:input name="testOperationNameRequest">
  <wsdlsoap:body encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" namespace="http://programName.companyName.com" use="encoded" />
  </wsdl:input>
- <wsdl:output name="testOperationNameResponse">
  <wsdlsoap:body encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost/axis/services/MyService" use="encoded" />
  </wsdl:output>
  </wsdl:operation>
  </wsdl:definitions>

 

(Note that I removed a bunch of things from the wsdl file that were not related to this operation.  I hope I didn't remove something necessary to decipher what the problem is.)

 

Thanks in advance,

Dave

Reply via email to