Hi all,
I installed a ZSI 2.0_rc2 on machine geron045.ncl.ac.uk.I run the
HelloWorld.py service on the this machine i.e.
http://geron045.ncl.ac.uk:8088/HelloWorld.py.This service has one operation
called "HelloWorld" which accepts one argument and return this argument.
Then from the another machine i.e "geron007.ncl.ac.uk" I tried to access this
HelloWorld service which is deployed at
http://geron045.ncl.ac.uk:8088/HelloWorld.py through AXIS2 client.I got the
processed failure message.I monitor the soap messages going back and forth
through TCPMON.The output for this is given below:
Request:
POST /HelloWorld.py HTTP/1.1
User-Agent: Axis/2.0
SOAPAction:
Connection: Keep-Alive
Host: geron045.ncl.ac.uk:8082
Content-Length: 809
Content-Type: text/xml; charset=UTF-8
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
<soapenv:Header><wsa:To
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://localhost:8082/HelloWorld.py</wsa:To><wsa:ReplyTo
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"><wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address></wsa:ReplyTo><wsa:MessageID
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">0A2F12FAE0A1B8456E11432354035971</wsa:MessageID>
</soapenv:Header>
<soapenv:Body>
<example1:HelloWorld xmlns:example1="http://example1.org/example1">
<example1:Text>Axis2 Echo String </example1:Text>
</example1:HelloWorld>
</soapenv:Body>
</soapenv:Envelope>
Response:
HTTP/1.0 500 Internal error
Server: ZSI/1.1 BaseHTTP/0.3 Python/2.4.2
Date: Fri, 24 Mar 2006 21:21:05 GMT
Content-type: text/xml; charset="utf-8"
Content-Length: 695
<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ZSI="http://www.zolera.com/schemas/ZSI/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server
</faultcode>
<faultstring>Processing Failure</faultstring><detail><ZSI:FaultDetail>
<ZSI:string>exceptions:TypeError
Expecting typecode in result
</ZSI:string>
<ZSI:trace>/usr/lib/python2.4/site-packages/ZSI/dispatch.py:69:_Dispatch</ZSI:trace></ZSI:FaultDetail>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Just to clarify things further.I did one more thing,I removed the argument for
the HelloWorld operation so now it is accepting no argument.And now when I
tried to access the same service.I got the error again.By monitoring the soap
messages going back and forth through TCPMON.This type the error changes to
something else as given below:
Request:
POST /HelloWorld.py HTTP/1.1
User-Agent: Axis/2.0
SOAPAction:
Connection: Keep-Alive
Host: geron045.ncl.ac.uk:8082
Content-Length: 740
Content-Type: text/xml; charset=UTF-8
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
<soapenv:Header>
<wsa:To
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://localhost:8082/HelloWorld.py</wsa:To>
<wsa:ReplyTo
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"><wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address></wsa:ReplyTo><wsa:MessageID
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">C1EB5D8FA2D3E2ABE811432360408471</wsa:MessageID>
</soapenv:Header>
<soapenv:Body>
<example1:HelloWorld xmlns:example1="http://example1.org/example1" />
</soapenv:Body>
</soapenv:Envelope>
Response:
HTTP/1.0 500 Internal error
Server: ZSI/1.1 BaseHTTP/0.3 Python/2.4.2
Date: Fri, 24 Mar 2006 21:31:42 GMT
Content-type: text/xml; charset="utf-8"
Content-Length: 708
<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ZSI="http://www.zolera.com/schemas/ZSI/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Processing Failure</faultstring>
<detail>
<ZSI:FaultDetail>
<ZSI:string>exceptions:TypeError
HelloWorld() takes no arguments (1 given)
</ZSI:string>
<ZSI:trace>/usr/lib/python2.4/site-packages/ZSI/dispatch.py:67:_Dispatch
</ZSI:trace>
</ZSI:FaultDetail>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
I am quite surprised by these errors.I am attaching with this mail my
HelloWorld.py service and AXIS2 client code.I would appreciate if some guy
would explain me the strange behavior of this simple scenario.
Kind Regards
Kashif Saleem
from ZSI import dispatch
def HelloWorld(year):
return year
print "Starting server..."
dispatch.AsServer(port=8088)
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package userguide.clients;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.context.*;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.om.OMElement;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import java.io.StringWriter;
/**
* Sample for synchronous single channel blocking service invocation.
* Message Exchage Pattern IN-OUT
*/
public class TestClient {
//private static EndpointReference targetEPR = new EndpointReference("http://www.basis.ncl.ac.uk/web-services/kashif.py");
private static EndpointReference targetEPR = new EndpointReference("http://localhost:8080/web-services/kashif.py");
public static void main(String[] args) {
try {
/* java.net.URL endpoint = new java.net.URL("http://www.basis.ncl.ac.uk/web-services/sbml.py");
EndpointReference targetEPR = new EndpointReference(targetEPR);*/
// OMElement payload = ClientUtil.getCreateUserOMElement();
OMElement payload = ClientUtil.getHelloOMElement();
Options options = new Options();
options.setTo(targetEPR);
options.setProperty(MessageContextConstants.CHUNKED, Constants.VALUE_FALSE);
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
//Blocking invocation
ServiceClient sender = new ServiceClient();
sender.setOptions(options);
OMElement result = sender.sendReceive(payload);
System.out.println("I got the result");
StringWriter writer = new StringWriter();
result.serialize(XMLOutputFactory.newInstance()
.createXMLStreamWriter(writer));
writer.flush();
System.out.println(writer.toString());
} catch (AxisFault axisFault) {
System.out.println("I am in axis fault");
axisFault.printStackTrace();
} catch (XMLStreamException e) {
e.printStackTrace();
}
}
}
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package userguide.clients;
import org.apache.axis2.om.OMAbstractFactory;
import org.apache.axis2.om.OMElement;
import org.apache.axis2.om.OMFactory;
import org.apache.axis2.om.OMNamespace;
import java.io.*;
public class ClientUtil {
public static OMElement getEchoOMElement() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace(
"http://example1.org/example1", "example1");
OMElement method = fac.createOMElement("echo", omNs);
OMElement value = fac.createOMElement("Text", omNs);
value.addChild(fac.createText(value, "Axis2 Echo String "));
method.addChild(value);
return method;
}
public static OMElement getValidateOMElement() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace(
"http://example1.org/example1", "example1");
OMElement method = fac.createOMElement("validate", omNs);
String sbml=readFile("/home/nks34/Desktop/softwares/axis2/samples/userguide/src/userguide/clients/sbmlmodel.xml");
System.out.println("I read it"+sbml);
OMElement value = fac.createOMElement(sbml, omNs);
// System.out.println("I read it");
// value.addChild(fac.createText(value, "Axis2 Echo String "));
method.addChild(value);
return method;
}
public static OMElement getHelloOMElement() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace(
"http://example1.org/example1", "example1");
OMElement method = fac.createOMElement("HelloWorld", omNs);
/* String sbml=readFile("/home/nks34/Desktop/softwares/axis2/samples/userguide/src/userguide/clients/sbmlmodel.xml");*/
// OMElement value = fac.createOMElement("Text", omNs);
// value.addChild(fac.createText(value,"Axis2 Echo String "));
// method.addChild(value);
return method;
}
public static OMElement getCreateUserOMElement() {
OMFactory fac=OMAbstractFactory.getOMFactory();
OMNamespace omNs=fac.createOMNamespace("http://example1.org/example1", "example1");
OMElement method = fac.createOMElement("createUser", omNs);
OMElement value = fac.createOMElement("tom786", omNs);
value.addChild(fac.createText(value, "[EMAIL PROTECTED]"));
method.addChild(value);
return method;
}
public static OMElement getHelloWorldOMElement(){
OMFactory fac=OMAbstractFactory.getOMFactory();
OMNamespace omNs=fac.createOMNamespace("http://example1.org/example1", "example1");
OMElement method = fac.createOMElement("helloWorld", omNs);
OMElement value = fac.createOMElement("Hello How r U", omNs);
method.addChild(value);
return method;
}
public static String readFile(String file)
{
String sbml="";
try {
BufferedReader in = new BufferedReader(new FileReader(file));
String str;
while ((str = in.readLine()) != null) {
sbml+=str;
}
in.close();
} catch (IOException e) {
}
return sbml;
}
public static OMElement getPingOMElement() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace(
"http://example1.org/example1", "example1");
OMElement method = fac.createOMElement("ping", omNs);
OMElement value = fac.createOMElement("Text", omNs);
value.addChild(fac.createText(value, "Axis2 Ping String "));
method.addChild(value);
return method;
}
}