1,订单bean
package sample;
public class Order {
// ID for order
private String orderID = null;
// date of order
private String orderDate= null;
// getter methods
public String getOrderID() {
return orderID;
}
public String getOrderID() {
return orderID;
}
// setter methods
public void setOrderID(String orderID) {
this.orderID = orderID;
} public void setOrderDate(String orderDate) {
this. orderDate = orderDate;
}
}
清单2:Order类相应的Holder类
package sample.holders;
public class OrderHolder {
// Order''s object
public Order value = null;
// default constructor
public void OrderHolder () { }
// constructor,which takes value as a parameter
public void OrderHolder (Order value) {
this.value=value;
}
}
清单3:订单处理Web服务
package sample;
public class OrderProcessingService {
//订单处理
public String processOrder(String orderID,
OrderHolder orderHolder ) {
String status = "pending";
Order order = new Order();
order.setOrderID(orderID);
order.setOrderDate("03 March 2003");
orderHolder.value = order;
status = "complete" ;
return status;
}
//更新订单
public String updateOrder(OrderHolder orderHolder) {
String status = "pending";
// perform update here
Order order = orderHolder.value;
order.setOrderDate("03 April 2003");
orderHolder.value = order;
//set the status
status = "complete" ;
return status;
}
}
至此,我们完成了所有web服务的开发。上面的部分跟我们开发一个其它的java应用没有什么区别。
清单4:部署文件deploy.wsdd
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name=" OrderProcessingService" provider="java:RPC">
<parameter name="className"
value="sample.OrderProcessingService "/>
<parameter name="allowedMethods" value="*"/>
<operation name="processOrder">
<parameter name="arg1" mode="IN"/>
<parameter name="arg2" mode="OUT"/>
</operation>
<operation name="updateOrder">
<parameter name="arg1" mode="INOUT"/>
</operation>
</service>
</deployment>
把改文家放在跟web.xml同一个目录下
切换到web.xml目录下面之后,运行下面的命令:
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient
-lhttp://localhost:8080/axis/services/AdminService deploy.wsdd
其中,AXISCLASSPATH用于设置Axis环境(详情请参考axis installation guide)
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.encoding.*;
import javax.xml.namespace.QName;
import java.util.*;
import sample.*;
/**
* This class illustrates how to use the JAX-RPC API to invoke
* the Order Processing Web service dynamically
*/
public class DynamicClient {
public static void main(String[] args) throws Exception {
// create service factory
ServiceFactory factory = ServiceFactory.newInstance();
// define qnames
String targetNamespace = "OrderProcessingService";
QName serviceName = new QName(targetNamespace,
"OrderProcessingService");
QName portName = new QName(targetNamespace,
"OrderProcessingService");
QName operationName = new QName(targetNamespace,"updateOrder");
// create service
Service service = new Service();
Call call = (Call) service.createCall();
Qname qn = new Qname(targetNamespace,"OrderHolder");
call.registerTypeMapping(OrderHolder.class,qn,
new org.apache.axis.encoding.ser.BeanSerializerFactory
(OrderHolder.class,qn),
new org.apache.axis.encoding.ser.BeanDeserializerFactory
(TicketHolder.class,qn));
// set port and operation name
call.setPortTypeName(portName);
call.setOperationName(operationName);
// add parameters
call.addParameter( "arg1",serviceName,ParameterMode.INOUT );
call.setReturnType( XMLType.XSD_STRING );
Order order = new Order ();
order.setOrderID("Order001");
order.setOrderDate("03 March 2003");
// set end point address
call.setTargetEndpointAddress(
"http://localhost:8080/axis/services/OrderProcessing");
// Invoke the WebService
String result = (String) call.invoke( new Object[] { order } );
System.out.println("result : " +result);
Map outparams = call.getOutputParams();
System.out.println("Got the outparams");
}
运行客户端
用下列命令运行客户端:
java -cp %AXISCLASSPATH% sample.client.DynamicClient
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。