一个axis的例子

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] 举报,一经查实,本站将立刻删除。

相关推荐