You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by pz...@apache.org on 2006/01/15 18:22:28 UTC
svn commit: r369234 - in /incubator/synapse/trunk/java/src/samples/userguide:
DumbStockQuoteClient.java ProxyStockQuoteClient.java StockQuoteClient.java
StockQuoteXMLHandler.java
Author: pzf
Date: Sun Jan 15 09:22:15 2006
New Revision: 369234
URL: http://svn.apache.org/viewcvs?rev=369234&view=rev
Log:
tidy up of sample clients and rewrite to use webservicex.net instead xmethods as more reliable
Added:
incubator/synapse/trunk/java/src/samples/userguide/StockQuoteXMLHandler.java
Modified:
incubator/synapse/trunk/java/src/samples/userguide/DumbStockQuoteClient.java
incubator/synapse/trunk/java/src/samples/userguide/ProxyStockQuoteClient.java
incubator/synapse/trunk/java/src/samples/userguide/StockQuoteClient.java
Modified: incubator/synapse/trunk/java/src/samples/userguide/DumbStockQuoteClient.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/samples/userguide/DumbStockQuoteClient.java?rev=369234&r1=369233&r2=369234&view=diff
==============================================================================
--- incubator/synapse/trunk/java/src/samples/userguide/DumbStockQuoteClient.java (original)
+++ incubator/synapse/trunk/java/src/samples/userguide/DumbStockQuoteClient.java Sun Jan 15 09:22:15 2006
@@ -2,6 +2,8 @@
+import java.net.URL;
+
import javax.xml.namespace.QName;
import org.apache.axis2.Constants;
@@ -24,6 +26,9 @@
import org.apache.axis2.om.OMNamespace;
import org.apache.axis2.om.OMText;
import org.apache.axis2.transport.http.CommonsHTTPTransportSender;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.transport.http.HttpTransportProperties;
+import org.apache.axis2.transport.http.HttpTransportProperties.ProxyProperties;
public class DumbStockQuoteClient {
@@ -40,7 +45,7 @@
if (args.length > 0 && args[0].substring(0, 1).equals("-")) {
System.out
.println("This client demonstrates Synapse as a gateway\n"
- + "Usage: ProxyStockQuoteClient Symbol SynapseURL");
+ + "Usage: DumbStockQuoteClient Symbol SynapseURL");
System.out
.println("\nDefault values: IBM http://localhost:8080/StockQuote"
+ "\nAll examples depend on using the sample synapse.xml");
@@ -55,18 +60,11 @@
symb = args[0];
if (args.length > 1)
url = args[1];
-
try {
// step 1 - create a request payload
- OMFactory factory = OMAbstractFactory.getOMFactory(); // access to
- // OM
- OMNamespace xNs = factory.createOMNamespace(
- "urn:xmethods-delayed-quotes", "x");
- OMElement getQuote = factory.createOMElement("getQuote", xNs);
- OMElement symbol = factory.createOMElement("symbol", xNs);
- getQuote.addChild(symbol);
- symbol.setText(symb);
+ OMElement getQuote = StockQuoteXMLHandler
+ .createRequestPayload(symb);
// step 2 - set up the call object
@@ -74,49 +72,34 @@
EndpointReference targetEPR = new EndpointReference(url);
Options options = new Options();
-
options.setTo(targetEPR);
-
- // create a lightweight Axis Config with no addressing to demonstrate "dumb" SOAP
- AxisConfiguration ac = new AxisConfiguration();
- ConfigurationContext cc = new ConfigurationContext(ac);
- AxisServiceGroup asg = new AxisServiceGroup(ac);
- AxisService as = new AxisService("AnonymousService");
- asg.addService(as);
-
-
- AxisOperation axisOperationTemplate = new OutInAxisOperation(
- new QName("getQuote"));
- as.addOperation(axisOperationTemplate);
- cc.getAxisConfiguration().addService(as);
- TransportOutDescription tod = new TransportOutDescription(
- new QName(Constants.TRANSPORT_HTTP));
- tod.setSender(new CommonsHTTPTransportSender());
- ac.addTransportOut(tod);
+ options.setSoapAction("http://www.webserviceX.NET/GetQuote");
+ // create a lightweight Axis Config with no addressing to
+ // demonstrate "dumb" SOAP
+ ServiceClient serviceClient = StockQuoteXMLHandler
+ .createServiceClient();
// make the ServiceClient
- ServiceClient serviceClient = new ServiceClient();
serviceClient.setOptions(options);
// step 3 - Blocking invocation
- OMElement result = serviceClient.sendReceive(getQuote);
+ OMElement result = serviceClient.sendReceive(new QName("getQuote"),
+ getQuote);
+ // System.out.println(result);
// step 4 - parse result
- QName gQR = new QName("urn:xmethods-delayed-quotes",
- "getQuoteResponse");
- QName Result = new QName("Result");
- OMElement qResp = (OMElement) result.getChildrenWithName(gQR)
- .next();
- OMText res = (OMText) qResp.getChildrenWithName(Result).next();
- System.out.println("Stock price = $" + res.getText());
+ System.out.println("Stock price = $"
+ + StockQuoteXMLHandler.parseResponse(result));
} catch (Exception e) {
e.printStackTrace();
}
+ }
+
}
}
Modified: incubator/synapse/trunk/java/src/samples/userguide/ProxyStockQuoteClient.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/samples/userguide/ProxyStockQuoteClient.java?rev=369234&r1=369233&r2=369234&view=diff
==============================================================================
--- incubator/synapse/trunk/java/src/samples/userguide/ProxyStockQuoteClient.java (original)
+++ incubator/synapse/trunk/java/src/samples/userguide/ProxyStockQuoteClient.java Sun Jan 15 09:22:15 2006
@@ -4,39 +4,25 @@
import javax.xml.namespace.QName;
-import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
-
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
-import org.apache.axis2.context.ConfigurationContext;
-
-import org.apache.axis2.description.AxisOperation;
-import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.AxisServiceGroup;
-import org.apache.axis2.description.OutInAxisOperation;
-import org.apache.axis2.description.TransportOutDescription;
-import org.apache.axis2.engine.AxisConfiguration;
-
-import org.apache.axis2.om.OMAbstractFactory;
-import org.apache.axis2.om.OMElement;
-import org.apache.axis2.om.OMFactory;
-import org.apache.axis2.om.OMNamespace;
-import org.apache.axis2.om.OMText;
-import org.apache.axis2.transport.http.CommonsHTTPTransportSender;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.transport.http.HttpTransportProperties;
+import org.apache.axis2.om.OMElement;
+
public class ProxyStockQuoteClient {
/**
*
* <p>
- * This is a fairly static test client for Synapse using the HTTP Proxy model.
- * It makes a StockQuote request to XMethods stockquote service. There is no
- * WS-Addressing To URL but we set the HTTP proxy URL to point to Synapse.
- * This results in the destination XMethods URL being embedded in the POST header.
- * Synapse will pick this out and use it to direct the message
+ * This is a fairly static test client for Synapse using the HTTP Proxy
+ * model. It makes a StockQuote request to XMethods stockquote service.
+ * There is no WS-Addressing To URL but we set the HTTP proxy URL to point
+ * to Synapse. This results in the destination XMethods URL being embedded
+ * in the POST header. Synapse will pick this out and use it to direct the
+ * message
*
*/
public static void main(String[] args) {
@@ -44,21 +30,21 @@
if (args.length > 0 && args[0].substring(0, 1).equals("-")) {
System.out
.println("This client demonstrates Synapse as a proxy\n"
- + "Usage: ProxyStockQuoteClient Symbol XmethodsURL ProxyURL");
+ + "Usage: ProxyStockQuoteClient Symbol StockQuoteURL ProxyURL");
System.out
- .println("\nDefault values: IBM http://64.124.140.30:9090/soap http://localhost:8080");
+ .println("\nDefault values: IBM http://www.webservicex.net/stockquote.asmx http://localhost:8080");
System.out
.println("\nThe XMethods URL will be used in the <wsa:To> header");
System.out.println("The Proxy URL will be used as an HTTP proxy");
System.out
- .println("\nTo demonstrate Synapse virtual URLs, set the xmethods URL to urn:xmethods-delayed-quotes\n"
+ .println("\nTo demonstrate Synapse virtual URLs, set the URL to http://stockquote\n"
+ "\nTo demonstrate content-based behaviour, set the Symbol to MSFT\n"
+ "\nAll examples depend on using the sample synapse.xml");
System.exit(0);
}
String symb = "IBM";
- String xurl = "http://64.124.140.30:9090/soap";
+ String xurl = "http://www.webservicex.net/stockquote.asmx";
String purl = "http://localhost:8080";
if (args.length > 0)
@@ -71,14 +57,8 @@
try {
// step 1 - create a request payload
- OMFactory factory = OMAbstractFactory.getOMFactory(); // access to
- // OM
- OMNamespace xNs = factory.createOMNamespace(
- "urn:xmethods-delayed-quotes", "x");
- OMElement getQuote = factory.createOMElement("getQuote", xNs);
- OMElement symbol = factory.createOMElement("symbol", xNs);
- getQuote.addChild(symbol);
- symbol.setText(symb);
+ OMElement getQuote = StockQuoteXMLHandler
+ .createRequestPayload(symb);
// step 2 - set up the call object
@@ -86,56 +66,42 @@
EndpointReference targetEPR = new EndpointReference(xurl);
Options options = new Options();
-
options.setTo(targetEPR);
URL url = new URL(purl);
-
- //engage HTTP Proxy
-
+ // engage HTTP Proxy
+
HttpTransportProperties httpProps = new HttpTransportProperties();
+
HttpTransportProperties.ProxyProperties proxyProperties = httpProps.new ProxyProperties();
proxyProperties.setProxyName(url.getHost());
proxyProperties.setProxyPort(url.getPort());
+ proxyProperties.setUserName("");
+ proxyProperties.setPassWord("");
+ proxyProperties.setDomain("");
-
options.setProperty(HTTPConstants.PROXY, proxyProperties);
-
- // create a lightweight Axis Config with no addressing to demonstrate "dumb" SOAP
- AxisConfiguration ac = new AxisConfiguration();
- ConfigurationContext cc = new ConfigurationContext(ac);
- AxisServiceGroup asg = new AxisServiceGroup(ac);
- AxisService as = new AxisService("AnonymousService");
- asg.addService(as);
-
- AxisOperation axisOperationTemplate = new OutInAxisOperation(
- new QName("getQuote"));
- as.addOperation(axisOperationTemplate);
- cc.getAxisConfiguration().addService(as);
- TransportOutDescription tod = new TransportOutDescription(
- new QName(Constants.TRANSPORT_HTTP));
- tod.setSender(new CommonsHTTPTransportSender());
- ac.addTransportOut(tod);
+ options.setAction("http://www.webserviceX.NET/GetQuote");
+ // create a lightweight Axis Config with no addressing to
+ // demonstrate "dumb" SOAP
+ ServiceClient serviceClient = StockQuoteXMLHandler
+ .createServiceClient();
// make the ServiceClient
- ServiceClient serviceClient = new ServiceClient();
serviceClient.setOptions(options);
// step 3 - Blocking invocation
- OMElement result = serviceClient.sendReceive(getQuote);
+ OMElement result = serviceClient.sendReceive(new QName("getQuote"),
+ getQuote);
+ // System.out.println(result);
// step 4 - parse result
- QName gQR = new QName("urn:xmethods-delayed-quotes",
- "getQuoteResponse");
- QName Result = new QName("Result");
- OMElement qResp = (OMElement) result.getChildrenWithName(gQR)
- .next();
- OMText res = (OMText) qResp.getChildrenWithName(Result).next();
- System.out.println("Stock price = $" + res.getText());
+ System.out.println("Stock price = $"
+ + StockQuoteXMLHandler.parseResponse(result));
} catch (Exception e) {
e.printStackTrace();
Modified: incubator/synapse/trunk/java/src/samples/userguide/StockQuoteClient.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/samples/userguide/StockQuoteClient.java?rev=369234&r1=369233&r2=369234&view=diff
==============================================================================
--- incubator/synapse/trunk/java/src/samples/userguide/StockQuoteClient.java (original)
+++ incubator/synapse/trunk/java/src/samples/userguide/StockQuoteClient.java Sun Jan 15 09:22:15 2006
@@ -1,5 +1,7 @@
package samples.userguide;
+import java.net.URL;
+
import javax.xml.namespace.QName;
@@ -13,6 +15,9 @@
import org.apache.axis2.om.OMFactory;
import org.apache.axis2.om.OMNamespace;
import org.apache.axis2.om.OMText;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.transport.http.HttpTransportProperties;
+import org.apache.axis2.transport.http.HttpTransportProperties.ProxyProperties;
import org.apache.axis2.Constants;
public class StockQuoteClient {
@@ -21,8 +26,8 @@
* @param args
* <p>
* This is a fairly static test client for Synapse. It makes a
- * StockQuote request to XMethods stockquote service. The EPR it
- * is sent to is for XMethods, but the actual transport URL is
+ * StockQuote request to WebServiceX stockquote service. The EPR it
+ * is sent to is for WebServiceX, but the actual transport URL is
* designed to go to the Synapse listener.
*
*/
@@ -30,25 +35,25 @@
if (args.length > 0 && args[0].substring(0, 1).equals("-")) {
System.out
- .println("Usage: StockQuoteClient Symbol XmethodsURL TransportURL");
+ .println("Usage: StockQuoteClient Symbol StockQuoteURL TransportURL");
System.out
- .println("\nDefault values: IBM http://64.124.140.30:9090/soap http://localhost:8080");
+ .println("\nDefault values: IBM http://www.webservicex.net/stockquote.asmx http://localhost:8080");
System.out
.println("\nThe XMethods URL will be used in the <wsa:To> header");
System.out
.println("The Transport URL will be used as the actual address to send to");
System.out
- .println("\nTo bypass Synapse, set the transport URL to the XMethods URL: \n"
- + "e.g. StockQuoteClient IBM http://64.124.140.30:9090/soap http://64.124.140.30:9090/soap\n"
- + "\nTo demonstrate Synapse virtual URLs, set the xmethods URL to urn:xmethods-delayed-quotes\n"
+ .println("\nTo bypass Synapse, set the transport URL to the WebServiceX URL: \n"
+ + "e.g. StockQuoteClient IBM http://www.webservicex.net/stockquote.asmx http://www.webservicex.net/stockquote.asmx \n"
+ + "\nTo demonstrate Synapse virtual URLs, set the URL to http://stockquote\n"
+ "\nTo demonstrate content-based behaviour, set the Symbol to MSFT\n"
+ "\nAll examples depend on using the sample synapse.xml");
System.exit(0);
}
String symb = "IBM";
- String xurl = "http://64.124.140.30:9090/soap";
- String turl = "http://127.0.0.1:8080";
+ String xurl = "http://www.webservicex.net/stockquote.asmx";
+ String turl = "http://localhost:8080";
if (args.length > 0)
symb = args[0];
@@ -58,49 +63,47 @@
turl = args[2];
try {
+
+ // step 1 - create a request payload
+ OMElement getQuote = StockQuoteXMLHandler
+ .createRequestPayload(symb);
- // step 1 - create a request payload
- OMFactory factory = OMAbstractFactory.getOMFactory(); // access to
- // OM
- OMNamespace xNs = factory.createOMNamespace(
- "urn:xmethods-delayed-quotes", "x");
- OMElement getQuote = factory.createOMElement("getQuote", xNs);
- OMElement symbol = factory.createOMElement("symbol", xNs);
- getQuote.addChild(symbol);
- symbol.setText(symb);
-
- // step 2 - set up the call object
-
- // the wsa:To
- EndpointReference targetEPR = new EndpointReference(xurl);
-
- Options options = new Options();
- options.setTo(targetEPR);
- options.setProperty(MessageContextConstants.CHUNKED, Constants.VALUE_FALSE);
-
- // the transport URL
- options.setProperty(MessageContextConstants.TRANSPORT_URL, turl);
-
- ServiceClient serviceClient = new ServiceClient();
- serviceClient.setOptions(options);
-
- // step 3 - Blocking invocation
- OMElement result = serviceClient.sendReceive(getQuote);
-
- // step 4 - parse result
- QName gQR = new QName("urn:xmethods-delayed-quotes",
- "getQuoteResponse");
- QName Result = new QName("Result");
- OMElement qResp = (OMElement) result.getChildrenWithName(gQR)
- .next();
- OMText res = (OMText) qResp.getChildrenWithName(Result).next();
+ // step 2 - set up the call object
- System.out.println("Stock price = $" + res.getText());
+ // the wsa:To
+ EndpointReference targetEPR = new EndpointReference(xurl);
+
+ Options options = new Options();
+ //options.setProperty(MessageContextConstants.TRANSPORT_URL, turl);
+ options.setTo(targetEPR);
+
+
+ options.setAction("http://www.webserviceX.NET/GetQuote");
+ options.setSoapAction("http://www.webserviceX.NET/GetQuote");
+
+ // options.setProperty(MessageContextConstants.CHUNKED, Constants.VALUE_FALSE);
+ ServiceClient serviceClient = new ServiceClient();
+
+ serviceClient.setOptions(options);
+
+ // step 3 - Blocking invocation
+ OMElement result = serviceClient.sendReceive(new QName("getQuote"),
+ getQuote);
+ // System.out.println(result);
+
+ // step 4 - parse result
+
+ System.out.println("Stock price = $"
+ + StockQuoteXMLHandler.parseResponse(result));
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
- } catch (Exception e) {
- e.printStackTrace();
- }
+
}
}
Added: incubator/synapse/trunk/java/src/samples/userguide/StockQuoteXMLHandler.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/samples/userguide/StockQuoteXMLHandler.java?rev=369234&view=auto
==============================================================================
--- incubator/synapse/trunk/java/src/samples/userguide/StockQuoteXMLHandler.java (added)
+++ incubator/synapse/trunk/java/src/samples/userguide/StockQuoteXMLHandler.java Sun Jan 15 09:22:15 2006
@@ -0,0 +1,88 @@
+package samples.userguide;
+
+import java.io.ByteArrayInputStream;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.OutInAxisOperation;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.om.OMAbstractFactory;
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.OMFactory;
+import org.apache.axis2.om.OMNamespace;
+import org.apache.axis2.om.OMText;
+import org.apache.axis2.om.impl.llom.builder.StAXOMBuilder;
+import org.apache.axis2.transport.http.CommonsHTTPTransportSender;
+
+public class StockQuoteXMLHandler {
+
+ public static OMElement createRequestPayload(String symb) {
+ OMFactory factory = OMAbstractFactory.getOMFactory(); // access to
+ // OM
+ OMNamespace xNs = factory.createOMNamespace(
+ "http://www.webserviceX.NET/", "");
+ OMElement getQuote = factory.createOMElement("GetQuote", xNs);
+ OMElement symbol = factory.createOMElement("symbol", xNs);
+ getQuote.addChild(symbol);
+ symbol.setText(symb);
+ return getQuote;
+ }
+
+ public static String parseResponse(OMElement result) throws XMLStreamException {
+ QName gQR = new QName("http://www.webserviceX.NET/", "GetQuoteResponse");
+
+ OMElement qResp = (OMElement) result.getChildrenWithName(gQR).next();
+
+ String text = ((OMText) qResp.getFirstOMChild()).getText();
+ // this odd webservice embeds XML as a string inside other XML
+ // hmmmm can't say its useful!
+
+
+
+
+ StAXOMBuilder builder = new StAXOMBuilder(new ByteArrayInputStream(
+ text.getBytes()));
+
+ OMElement parse = builder.getDocumentElement();
+
+ OMElement last = (OMElement) parse.getFirstElement().getFirstElement()
+ .getNextOMSibling();
+ OMText lastText = (OMText) last.getFirstOMChild();
+ return lastText.getText();
+
+ }
+
+ public static ServiceClient createServiceClient() throws AxisFault {
+ AxisConfiguration ac = new AxisConfiguration();
+ ConfigurationContext cc = new ConfigurationContext(ac);
+ AxisServiceGroup asg = new AxisServiceGroup(ac);
+ AxisService as = new AxisService("AnonymousService");
+ asg.addService(as);
+
+ AxisOperation axisOperationTemplate = new OutInAxisOperation(
+ new QName("getQuote"));
+ as.addOperation(axisOperationTemplate);
+ cc.getAxisConfiguration().addService(as);
+ TransportOutDescription tod = new TransportOutDescription(
+ new QName(Constants.TRANSPORT_HTTP));
+
+ tod.setSender(new CommonsHTTPTransportSender());
+ ac.addTransportOut(tod);
+
+ // make the ServiceClient
+
+
+ ServiceClient serviceClient = new ServiceClient(cc, as);
+ return serviceClient;
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org