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