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 "Sunil Choudhari -X (suchaudh - Satyam at Cisco)" <su...@cisco.com> on 2006/12/06 23:10:25 UTC
WS Addressing in Axis 2.0 (Ver 1.0) ReplyTo
Hi,
I am not able to send my service response to other service.
Find below Service Code:
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.OperationContext;
import org.apache.axis2.context.ServiceContext;
import org.apache.axis2.wsdl.WSDLConstants;
public class MutliHopRedirectService1 {
private final String applicationNamespaceName =
"http://sunilfromws.org/";
private final String echoStringResponse = "echoStringResponse";
private final String EchoStringReturn = "EchoStringReturn";
private final String Text = "Text";
private final String Sequence = "Sequence";
private MessageContext inMsgCtx;
public void setOperationContext(OperationContext opctx)
throws AxisFault {
inMsgCtx =
opctx.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
}
public OMElement echoRedirect(OMElement ome) throws Exception{
Options oldOptions = inMsgCtx.getOptions();
String messageID = inMsgCtx.getMessageID();
System.out.println("Message ID .." + messageID);
//EndpointReference FromEPR = oldOptions.getFrom();
//System.out.println("From EPR.."+FromEPR.getAddress());
EndpointReference targetEPR = oldOptions.getReplyTo();
System.out.println("Reply to
TargetEPR.."+targetEPR.getAddress());
String action = oldOptions.getAction();
System.out.println("Action..."+action);
//Return
OMElement textElem = ome.getFirstChildWithName(new QName
(applicationNamespaceName,Text));
OMElement sequenceElem = ome.getFirstChildWithName(new QName
(applicationNamespaceName,Sequence));
if (textElem==null)
throw new Exception ("'Text' element is not present as a
child of the 'echoString' element");
if (sequenceElem==null)
throw new Exception ("'Sequence' element is not present as a
child of the 'echoString' element");
String textStr = textElem.getText();
String sequenceStr = sequenceElem.getText();
System.out.println("'EchoString' service got text '" + textStr +
"' for the sequence '" + sequenceStr + "'");
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace applicationNamespace =
fac.createOMNamespace(applicationNamespaceName,"ns1");
OMElement echoStringResponseElem =
fac.createOMElement(echoStringResponse, applicationNamespace);
OMElement echoStringReturnElem =
fac.createOMElement(EchoStringReturn, applicationNamespace);
String resultText = textStr + "---" + sequenceStr;
echoStringReturnElem.setText(resultText);
echoStringResponseElem.addChild(echoStringReturnElem);
return echoStringResponseElem;
}
public void echoRedirectIn(OMElement ome) throws Exception{
Options oldOptions = inMsgCtx.getOptions();
String messageID = inMsgCtx.getMessageID();
System.out.println("Message ID .." + messageID);
//EndpointReference FromEPR = oldOptions.getFrom();
//System.out.println("From EPR.."+FromEPR.getAddress());
EndpointReference targetEPR = oldOptions.getReplyTo();
System.out.println("Reply to
TargetEPR.."+targetEPR.getAddress());
String action = oldOptions.getAction();
System.out.println("Action..."+action);
//Return
OMElement textElem = ome.getFirstChildWithName(new QName
(applicationNamespaceName,Text));
OMElement sequenceElem = ome.getFirstChildWithName(new QName
(applicationNamespaceName,Sequence));
if (textElem==null)
throw new Exception ("'Text' element is not present as a
child of the 'echoString' element");
if (sequenceElem==null)
throw new Exception ("'Sequence' element is not present as a
child of the 'echoString' element");
String textStr = textElem.getText();
String sequenceStr = sequenceElem.getText();
System.out.println("'EchoString' service got text '" + textStr +
"' for the sequence '" + sequenceStr + "'");
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace applicationNamespace =
fac.createOMNamespace(applicationNamespaceName,"ns1");
OMElement echoStringResponseElem =
fac.createOMElement(echoStringResponse, applicationNamespace);
OMElement echoStringReturnElem =
fac.createOMElement(EchoStringReturn, applicationNamespace);
String resultText = textStr + "---" + sequenceStr;
echoStringReturnElem.setText(resultText);
echoStringResponseElem.addChild(echoStringReturnElem);
//return echoStringResponseElem;
}
}
Client:
public class Service1Client {
private final static String applicationNamespaceName =
"http://sunilfromws.org/";
private final static String echoString = "echoString";
private final static String echoStringIn = "echoStringIn";
private final static String Text = "Text";
private final static String Sequence = "Sequence";
private static String toEPR =
"http://127.0.0.1:8080/Axis2/services/MutliHopRedirectService1";
private static String targetReplyEPR =
"http://127.0.0.1:8080/Axis2/services/MyServive/echo";
private static String CLIENT_REPO_PATH = "C:/Apache/addressclient";
public static void main(String[] args) throws Exception {
System.out.println("Calling getEchoString");
getEchoString();
System.out.println("Complete getEchoString");
System.out.println("Calling getEchoStringIn");
getEchoStringIn();
System.out.println("Complete getEchoStringIn");
}
private static void getEchoString()throws Exception{
String axis2_xml = CLIENT_REPO_PATH + File.separator
+"client_axis2.xml";
//Add
EndpointReference objtargetReplyEPR = new
EndpointReference(targetReplyEPR);
ConfigurationContext configContext =
ConfigurationContextFactory.createConfigurationContextFromFileSystem(CLI
ENT_REPO_PATH,axis2_xml);
ServiceClient serviceClient = new ServiceClient
(configContext,null);
Options clientOptions = new Options ();
//Normal Setting
clientOptions.setTo(new EndpointReference (toEPR));
clientOptions.setTransportInProtocol(Constants.TRANSPORT_HTTP);
clientOptions.setAction("urn:echoRedirect");
serviceClient.setOptions(clientOptions);
OMElement theelem =
serviceClient.sendReceive(getEchoOMBlock("echo1","sequence1",echoString)
);
System.out.println("Complete");
// writeOM(theResult);
}
private static void getEchoStringIn()throws Exception{
String axis2_xml = CLIENT_REPO_PATH + File.separator
+"client_axis2.xml";
EndpointReference objtargetReplyEPR = new
EndpointReference(targetReplyEPR);
//ConfigurationContext configContext =
ConfigurationContextFactory.createConfigurationContextFromFileSystem(CLI
ENT_REPO_PATH,null);
ConfigurationContext configContext =
ConfigurationContextFactory.createConfigurationContextFromFileSystem(CLI
ENT_REPO_PATH,axis2_xml);
ServiceClient serviceClient = new ServiceClient
(configContext,null);
Options clientOptions = new Options ();
clientOptions.setReplyTo(objtargetReplyEPR);
clientOptions.setProperty(AddressingConstants.WSA_REPLY_TO,
objtargetReplyEPR);
//Normal Setting
clientOptions.setTo(new EndpointReference (toEPR));
clientOptions.setTransportInProtocol(Constants.TRANSPORT_HTTP);
clientOptions.setAction("urn:echoRedirectIn");
clientOptions.setUseSeparateListener(true);
serviceClient.setOptions(clientOptions);
serviceClient.fireAndForget(getEchoOMBlock("echo1","sequence1",echoStrin
gIn));
//serviceClient.fireAndForget(getEchoOMBlock("echo1","sequence1"));
System.out.println("Complete");
// writeOM(theResult);
}
private static OMElement getEchoOMBlock(String text, String
sequenceKey, String Operationname) {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace applicationNamespace =
fac.createOMNamespace(applicationNamespaceName,"ns1");
OMElement echoStringElement = fac.createOMElement(echoString,
applicationNamespace);
OMElement textElem =
fac.createOMElement(Text,applicationNamespace);
OMElement sequenceElem =
fac.createOMElement(Sequence,applicationNamespace);
textElem.setText(text);
sequenceElem.setText(sequenceKey);
echoStringElement.addChild(textElem);
echoStringElement.addChild(sequenceElem);
System.out.println("Client Side..");
writeOM(echoStringElement);
return echoStringElement;
}
public static void writeOM(OMElement lineItem){
// Seralize the O/p
try{
XMLOutputFactory xof = XMLOutputFactory.newInstance();
XMLStreamWriter writer = xof.
createXMLStreamWriter(System.out);
lineItem.serialize(writer);
writer.flush();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
And Service.xml
<service name="MutliHopRedirectService1">
<description>
This is a sample Web Service with One operation
MutliHopRedirectService1
</description>
<parameter name="ServiceClass" locked="false">package
com.axis.addressing.redirect.MutliHopRedirectService1</parameter>
<operation name="echoRedirect">
<messageReceiver
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
<actionMapping>urn:echoRedirect</actionMapping>
</operation>
<operation name="echoRedirectIn">
<messageReceiver
class="org.apache.axis2.receivers.RawXMLINMessageReceiver"/>
<actionMapping>urn:echoRedirectIn</actionMapping>
</operation>
</service>
Whenever client calls " echoRedirectIn" I am not getting any
request/response entry in SOAP monitor.
Thanks
Sunil
-----Original Message-----
From: S. Sharif [mailto:al_zawiah@yahoo.com]
Sent: Friday, December 01, 2006 5:36 PM
To: axis-user@ws.apache.org
Subject: [Axis2] Question: Axis2 Quick Start Guide, the 5 approaches for
creating web services (POJO, AXIOM, ADB, XMLBeans, JiBX)
Hi,
I am new to Axis/Axis2. I stumbled into Axis2 earlier
this week, while trying to find something that would
make developing web services in Java less difficult I
have started looking at Axis2 during the last couple
of days, downloaded it, installed it, ran it, and read
through some docs.
I am working on a project, that already has several
web services that were previously developed using some
proprietary Novell software tool. Now I have been
tasked to look into converting these web services to
Java.
I don't have a wsdl file. If there is one, then the
Novell web service development tool probabley
generates it behind the scenes somewhere. The web
services currently take in input as a request xml
document and return a response xml document. So I
know what the input xml and output xml looks like for
each one of the web services, but I don't have the
wsdl.
Now, I am trying to figure out what is the best and
fastest way for me to convert these web services to
Java.
I read through the quick start guide for Axis2 at
http://ws.apache.org/axis2/1_1/quickstartguide.html
The guide outlines 5 different approaches (POJO,
AXIOM, ADB, XMLBeans, JiBX). I have read through the
guide, but I can't help not being confused over which
approach I should go with. I would like some help on
deciding which approach is best for my situation.
Any help is very much appreciated.
Thanks.
**********************************************************
* Saladin Sharif
* e-mail: al_zawiah@yahoo.com
* Visit homepage @ http://gaia.ecs.csus.edu/~sharifs
**********************************************************
________________________________________________________________________
____________
Want to start your own business?
Learn how on Yahoo! Small Business.
http://smallbusiness.yahoo.com/r-index
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org