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 ServiceClients 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 Toms 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 |
View the discussion thread. site comments powered by