Hi,
I am trying to enable my webservice to handle both REST and SOAP. I am
currently using ADB for databinding. Also I changed the '
'enableRESTInAxis2MainServlet' flag to true in axis2.xml file. Please
see the file snippet below:
<!--parameters help to tweak the message handling of two main
servlets. -->
<!-- If the enableRESTInAxis2MainServlet is true, then
Axis2MainServlet will handle both SOAP and REST messages -->
<parameter name="enableRESTInAxis2MainServlet"
locked="true">true</parameter>
<!-- Following parameter will completely disable REST handling in
both the servlets-->
<parameter name="disableREST" locked="true">false</parameter>
<!-- This will disable the separate servlet we have for REST
handling. -->
<parameter name="disableSeparateEndpointForREST"
locked="true">true</parameter>
After changing the file I regenerated the wsdl and created the aar file
again. When I deployed it on the server(JBoss) and tried invoke the
service using REST I was able to do so. But when I tried to invoke the
service using SOAP client(with the help of stub). I get the following
error.
[java] org.apache.axis2.AxisFault: Transport level information does
not ma
ch with SOAP Message namespace URI; nested exception is:
[java] org.apache.axiom.soap.SOAPProcessingException: Transport
level
nformation does not match with SOAP Message namespace URI
[java] at
org.apache.axis2.transport.TransportUtils.createSOAPMessage(
ransportUtils.java:126)
[java] at
org.apache.axis2.transport.TransportUtils.createSOAPMessage(
ransportUtils.java:67)
[java] at
org.apache.axis2.description.OutInAxisOperationClient.send(O
tInAxisOperation.java:252)
[java] at
org.apache.axis2.description.OutInAxisOperationClient.execut
(OutInAxisOperation.java:202)
[java] at
com.gryphonnetworks.ws.CertifyServiceStub.certifyClient(Cert
fyServiceStub.java:344)
[java] at
com.gryphonnetworks.ws.GryphonClient.main(GryphonClient.java
56)
[java] Caused by: org.apache.axiom.soap.SOAPProcessingException:
Transport
level information does not match with SOAP Message namespace URI
[java] at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.iden
ifySOAPVersion(StAXSOAPModelBuilder.java:144)
[java] at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<ini
>(StAXSOAPModelBuilder.java:108)
[java] at
org.apache.axis2.transport.TransportUtils.createSOAPMessage(
ransportUtils.java:120)
[java] ... 5 more
Following is my SOAP client code:
package com.gryphonnetworks.ws;
import java.rmi.RemoteException;
import com.gryphonnetworks.ws.CertifyServiceStub;
import com.gryphonnetworks.common.xsd.ChannelDetails;
import com.gryphonnetworks.common.xsd.CertificationData;
import com.gryphonnetworks.ws.xsd.CertifyClient;
import com.gryphonnetworks.ws.CertifyClientFaultException;
import com.gryphonnetworks.ws.xsd.CertifyClientFault;
import com.gryphonnetworks.ws.xsd.CertifyClientResponse;
public class GryphonClient {
/**
* If account# == "13", then you will get a AccountNotExistFault.
* otherwise if you provide an amount > 1000, you will get a
InsufficientFundFaultMessageException,
* otherwise you will get a response with a balance equal to 1000
- amountWithdrawn.
*/
private static String URL =
"http://localhost:8080/axis2/services/CertifyService";
public static void main(String[] args) {
CertifyServiceStub stub = null;
System.out.println("Entering: GryphonClient");
try {
stub = new CertifyServiceStub(URL);
CertificationData[] certificationData = new
CertificationData[2];
CertificationData cdTemp = new
CertificationData();
ChannelDetails [] cahnnelDetails = new
ChannelDetails[1];
ChannelDetails temp = new ChannelDetails();
temp.setChannelType("EMAIL");
temp.setChannelDetails("12345");
cahnnelDetails[0] = temp;
cdTemp.setChannelDetails(cahnnelDetails);
cdTemp.setClientId(124);
certificationData[0] = cdTemp;
cdTemp = new CertificationData();
temp = new ChannelDetails();
cahnnelDetails = new ChannelDetails[1];
temp.setChannelType("FAX");
temp.setChannelDetails("6789");
cahnnelDetails[0] = temp;
cdTemp.setChannelDetails(cahnnelDetails);
cdTemp.setClientId(2489);
certificationData[1] = cdTemp;
CertifyClient certifyClient = new
CertifyClient();
certifyClient.setData(certificationData);
/*RestEnabled re = new RestEnabled();
re.setArg("Nalini Srivastava");
RestEnabledResponse response =
stub.restEnabled(re);*/
CertifyClientResponse response =
stub.certifyClient(certifyClient);
System.out.println("After calling the
ws..."+response);
if(response != null)
{
System.out.println("After calling the
ws...response != null");
CertificationData[] ret = response.get_return();
if(ret != null)
{
System.out.println("After calling the
ws...ret != null");
System.out.println("After calling the
ws...ret[0].getClientId : "+ret[0].getClientId());
}
}
} catch (CertifyClientFaultException e) {
final CertifyClientFault fault = e.getFaultMessage();
System.out.println("The fault is " +
fault.getErrorCode());
} catch (RemoteException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Please let me know what I am doing wrong in this.
Regards,
Nalini
-----Original Message-----
From: Nalini Srivastava
Sent: Wednesday, February 28, 2007 5:36 PM
To: Nalini Srivastava; '[email protected]'
Subject: RE: [axis2] REST approach
Hi,
I am new to web services. I was looking at the 'userguide' provided with
axis2 distribution. The sample has used AXIOM data binding mechanism.
Can we use any other mechanism in it's place for the same example.
Regards,
Nalini
***The information transmitted is intended only for the person or entity to
which it is addressed and may contain confidential and/or privileged material.
Any review,retransmission,dissemination or other use of, or taking of any
action in reliance upon, this information by persons or entities other than the
intended recipient is prohibited. If you received this in error, please contact
the sender and delete the material from any computer.***