HOME | J2ME | Struts | AJAX | SOAP | SOA MEDIA STREAMING AXIS |
AXIS STEP BY STEP
Web Services
Axis Introduction
Installations
Hello World
Using Eclipse
POJO Service
POJO Client
AXIOM Service
AXIOM Client

 

 

AXIOM Client

Back | Tutorial Home |

Similar to what we have done in for POJO client create an end point reference

EndpointReference endPointRef = new EndpointReference(
"http://localhost:8080/axis2/services/PhoneBookService");

Create a service client set the options for service clients

Options options = new Options();
options.setTo(endPointRef);
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
ServiceClient sender = new ServiceClient();
sender.setOptions(options);

One of the options is TRANSPORT_HTTP for HTTP transport protocol. JMS Transport , TCP Transport and Mail Transport are also supported by Axis2.

Use ServiceClient’s fireAndForget method to send the XML request. The request payload is created in a separate method setPhoneAXIOMXML().

OMElement updatePhonePayload = setPhoneAXIOMXML("Tom", "53453456");
sender.fireAndForget(updatePhonePayload);

fireAndForget() method is as the name describes is for In-Only MEP, Does not return Server(Service) errors and only returns client side errors like “host not found”.

setPhoneAXIOMXML() method creates the AXIOM payload which needs to be sent to the server

public static OMElement setPhoneAXIOMXML(String empid, String phone) {
	OMFactory fac = OMAbstractFactory.getOMFactory();
	OMNamespace omNs = fac.createOMNamespace("http://axiom.demo/xsd", "tns");

	OMElement method = fac.createOMElement("setPhone", omNs);

	OMElement value1 = fac.createOMElement("empid", omNs);
	value1.addChild(fac.createOMText(value1, empid));
	method.addChild(value1);

	OMElement value2 = fac.createOMElement("phoneno", omNs);
	value2.addChild(fac.createOMText(value2,phone));
	method.addChild(value2);
	return method;
}

Now that Tom’s phone number is set. Lets get this phone number and display on console

OMElement getPhonePayload = getPhoneAXIOMXML("Tom"); 
OMElement result = sender.sendReceive(getPhonePayload);
String response = result.getFirstElement().getText();
System.out.println("Toms Phone Number: " + response);

sendReceive() is for In-Out MEP

getPhoneAXIOMXML() creates the payload to get phone number

public static OMElement getPhoneAXIOMXML(String empid) {
	OMFactory fac = OMAbstractFactory.getOMFactory();
	OMNamespace omNs = fac.createOMNamespace("http://axiom.demo/xsd", "tns");
	
	OMElement method = fac.createOMElement("getPhoneNumber", omNs);
	OMElement value = fac.createOMElement("empid", omNs);
	value.addChild(fac.createOMText(value, empid));
	method.addChild(value);
	return method;
}

The complete listing of client program is given below

package demo.axiom.client;

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.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;

public class PhoneBookClient {

    private static EndpointReference endPointRef = 
        new EndpointReference(
                              "http://localhost:8080/axis2/services/PhoneBookService");

    public static OMElement getPhoneAXIOMXML(String empid) {
        OMFactory fac = OMAbstractFactory.getOMFactory();
        OMNamespace omNs = fac.createOMNamespace(
                                                 "http://axiom.demo/xsd", "tns");

        OMElement method = fac.createOMElement("getPhoneNumber", omNs);
        OMElement value = fac.createOMElement("empid", omNs);
        value.addChild(fac.createOMText(value, empid));
        method.addChild(value);
        return method;
    }

    public static OMElement setPhoneAXIOMXML(String empid, String phone) {
        OMFactory fac = OMAbstractFactory.getOMFactory();
        OMNamespace omNs = fac.createOMNamespace(
                                                 "http://axiom.demo/xsd", "tns");

        OMElement method = fac.createOMElement("setPhone", omNs);

        OMElement value1 = fac.createOMElement("empid", omNs);
        value1.addChild(fac.createOMText(value1, empid));
        method.addChild(value1);

        OMElement value2 = fac.createOMElement("phoneno", omNs);
        value2.addChild(fac.createOMText(value2,phone));
        method.addChild(value2);
        return method;
    }

    public static void main(String[] args) {
        try {
            OMElement getPhonePayload = getPhoneAXIOMXML("Tom");
            OMElement updatePhonePayload = setPhoneAXIOMXML("Tom", "53453456");
            Options options = new Options();
            options.setTo(endPointRef);
            options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

            ServiceClient sender = new ServiceClient();
            sender.setOptions(options);

            sender.fireAndForget(updatePhonePayload);
            System.out.println("Updated Tom's Phone Number");
            Thread.sleep(3000);
            OMElement result = sender.sendReceive(getPhonePayload);

            String response = result.getFirstElement().getText();
            System.out.println("Toms Phone Number: " + response);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
}

When you build and run this example you should get following console outputs

Updated Tom's Phone Number
Toms Phone Number: 53453456

Back | Tutorial Home |

site comments powered by Disqus
Download our free toolbar

toolbar powered by Conduit

| Copyright © 2009. All rights reserved | Terms and Conditions | About | Contact | Feed Back |