加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

一个axis的例子

发布时间:2020-12-17 02:56:39 所属栏目:安全 来源:网络整理
导读: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; ? } ? publ

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读