GetQuote1public class GetQuote1 extends Object This version of the ever so popular GetQuote is a near-duplicate of
the GetQuote1 method in samples/stock which shows how to use the AXIS
client APIs with and without WSDL. This version is strictly JAX-RPC
compliant. It uses no AXIS enhancements.
This sample supports the use of the standard options too (-p ...) |
Fields Summary |
---|
public String | symbol |
Methods Summary |
---|
public float | getQuote1(java.lang.String[] args)This will use the WSDL to prefill all of the info needed to make
the call. All that's left is filling in the args to invoke().
Options opts = new Options(args);
args = opts.getRemainingArgs();
if (args == null) {
System.err.println("Usage: GetQuote <symbol>");
System.exit(1);
}
/* Define the service QName and port QName */
/*******************************************/
QName servQN = new QName("urn:xmltoday-delayed-quotes",
"GetQuoteService");
QName portQN = new QName("urn:xmltoday-delayed-quotes", "GetQuote");
/* Now use those QNames as pointers into the WSDL doc */
/******************************************************/
Service service = ServiceFactory.newInstance().createService(
new URL("file:samples/stock/GetQuote.wsdl"), servQN);
Call call = service.createCall(portQN, "getQuote");
/* Strange - but allows the user to change just certain portions of */
/* the URL we're gonna use to invoke the service. Useful when you */
/* want to run it thru tcpmon (ie. put -p81 on the cmd line). */
/********************************************************************/
opts.setDefaultURL(call.getTargetEndpointAddress());
call.setTargetEndpointAddress(opts.getURL());
/* Define some service specific properties */
/*******************************************/
call.setProperty(Call.USERNAME_PROPERTY, opts.getUser());
call.setProperty(Call.PASSWORD_PROPERTY, opts.getPassword());
/* Get symbol and invoke the service */
/*************************************/
Object result = call.invoke(new Object[] {symbol = args[0]});
return ((Float) result).floatValue();
| public float | getQuote2(java.lang.String[] args)This will do everything manually (ie. no WSDL).
Options opts = new Options(args);
args = opts.getRemainingArgs();
if (args == null) {
System.err.println("Usage: GetQuote <symbol>");
System.exit(1);
}
/* Create default/empty Service and Call object */
/************************************************/
Service service = ServiceFactory.newInstance().createService(null);
Call call = service.createCall();
/* Strange - but allows the user to change just certain portions of */
/* the URL we're gonna use to invoke the service. Useful when you */
/* want to run it thru tcpmon (ie. put -p81 on the cmd line). */
/********************************************************************/
opts.setDefaultURL("http://localhost:8080/axis/servlet/AxisServlet");
/* Set all of the stuff that would normally come from WSDL */
/***********************************************************/
call.setTargetEndpointAddress(opts.getURL());
call.setProperty(Call.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
call.setProperty(Call.SOAPACTION_URI_PROPERTY, "getQuote");
call.setProperty(Call.ENCODINGSTYLE_URI_PROPERTY,
"http://schemas.xmlsoap.org/soap/encoding/");
call.setOperationName(new QName("urn:xmltoday-delayed-quotes", "getQuote"));
call.addParameter("symbol", XMLType.XSD_STRING, ParameterMode.IN);
call.setReturnType(XMLType.XSD_FLOAT);
/* Define some service specific properties */
/*******************************************/
call.setProperty(Call.USERNAME_PROPERTY, opts.getUser());
call.setProperty(Call.PASSWORD_PROPERTY, opts.getPassword());
/* Get symbol and invoke the service */
/*************************************/
Object result = call.invoke(new Object[] {symbol = args[0]});
return ((Float) result).floatValue();
| public float | getQuote3(java.lang.String[] args)This method does the same thing that getQuote1 does, but in
addition it reuses the Call object to make another call.
Options opts = new Options(args);
args = opts.getRemainingArgs();
if (args == null) {
System.err.println("Usage: GetQuote <symbol>");
System.exit(1);
}
/* Define the service QName and port QName */
/*******************************************/
QName servQN = new QName("urn:xmltoday-delayed-quotes",
"GetQuoteService");
QName portQN = new QName("urn:xmltoday-delayed-quotes", "GetQuote");
/* Now use those QNames as pointers into the WSDL doc */
/******************************************************/
Service service = ServiceFactory.newInstance().createService(
new URL("file:samples/stock/GetQuote.wsdl"), servQN);
Call call = service.createCall(portQN, "getQuote");
/* Strange - but allows the user to change just certain portions of */
/* the URL we're gonna use to invoke the service. Useful when you */
/* want to run it thru tcpmon (ie. put -p81 on the cmd line). */
/********************************************************************/
opts.setDefaultURL(call.getTargetEndpointAddress());
call.setTargetEndpointAddress(opts.getURL());
/* Define some service specific properties */
/*******************************************/
call.setProperty(Call.USERNAME_PROPERTY, opts.getUser());
call.setProperty(Call.PASSWORD_PROPERTY, opts.getPassword());
/* Get symbol and invoke the service */
/*************************************/
Object result = call.invoke(new Object[] {symbol = args[0]});
/* Reuse the Call object for a different call */
/**********************************************/
call.setOperationName(new QName("urn:xmltoday-delayed-quotes", "test"));
call.removeAllParameters();
call.setReturnType(XMLType.XSD_STRING);
System.out.println(call.invoke(new Object[]{}));
return ((Float) result).floatValue();
| public static void | main(java.lang.String[] args)
String save_args[] = new String[args.length];
float val;
GetQuote1 gq = new GetQuote1();
/* Call the getQuote() that uses the WDSL */
/******************************************/
System.out.println("Using WSDL");
System.arraycopy(args, 0, save_args, 0, args.length);
val = gq.getQuote1(args);
System.out.println(gq.symbol + ": " + val);
/* Call the getQuote() that does it all manually */
/*************************************************/
System.out.println("Manually");
System.arraycopy(save_args, 0, args, 0, args.length);
val = gq.getQuote2(args);
System.out.println(gq.symbol + ": " + val);
/* Call the getQuote() that uses Axis's generated WSDL */
/*******************************************************/
System.out.println("WSDL + Reuse Call");
System.arraycopy(save_args, 0, args, 0, args.length);
val = gq.getQuote3(args);
System.out.println(gq.symbol + ": " + val);
|
|