SOA方法的一个简单例子

看了网上给的一些资料,写了一个SOA的服务端和客户端,传递的是javabean对象,用的是Axis

不用手动生成stub文件,感觉比较简单点。 

 

 

1、服务端代码,很简单,很普通

 

package cn.cnic.sdc.jenva.soa.axis2;

import java.util.HashMap;
import java.util.Vector;


public class OrderService {
  
 public Order returnOrder(Order order){
     
  Order newOrder = new Order();
     
  if(order.getId().equals("1")){
   newOrder.setName("ronghao");
  } else{
   newOrder.setName(order.getName());
  }
       
  return newOrder;
    }
 /*
 public HashMap<Integer, String> returnPeople(Vector<People> v){
  HashMap<Integer, String> hm = new HashMap<Integer, String>();;
  for (int i=0; i<v.size();i++){
   hm.put(v.get(i).getId(),v.get(i).getName());
  }
  return hm;
 }
 */
  } 

 

2、客户端代码

 

package cn.cnic.sdc.jenva.soa.axis2;

import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;
import java.util.ArrayList;

import javax.xml.namespace.QName;
import javax.xml.*;

import java.net.MalformedURLException;
import java.rmi.RemoteException;
import java.util.ArrayList;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;

public class OrderClient
{

    public static void main(String args[])
        throws Exception
    {
        //服务所在位置
        String endpoint = "http://localhost:8080/AixswithParam3/services/OrderService"; 

        Order order=new Order();   //JavaBean
        order.setId("1");
        order.setName("Jenva2");
        Service service = new Service();
        Call call = (Call)service.createCall();
        //注册JavaBean,注意和server-config.wsdd中的配置代码比较
        QName qn = new QName("urn:BeanService", "Order");
        call.registerTypeMapping(Order.class, qn, new BeanSerializerFactory(Order.class, qn),
                                new BeanDeserializerFactory(Order.class, qn));
        String name="hi!";
        try
        {
            call.setTargetEndpointAddress(new java.net.URL(endpoint));
            //调用的服务器端方法
            call.setOperationName(new QName("Order", "returnOrder"));
            //设定传入的参数,这里qn即Order.class
            call.addParameter("arg1", qn, ParameterMode.IN);
            //设定返回的参数是Order.class
            call.setReturnType(qn, Order.class);
            Order result = (Order)call.invoke(new Object[] {order});
            if(result != null)
                name = result.getName();
        }
        catch(Exception e)
        {
            System.err.println(e);
        }
        System.out.println(name);
    }
}

 

3、需要6个支持的jar文件

 

E:/eclipse/plugins/org.apache.axis_1.4.0.v200807230600/lib/axis.jar
E:/eclipse/plugins/org.apache.commons.discovery_0.2.0.v200806030120/lib/commons-discovery-0.2.jar
E:/eclipse/plugins/javax.xml.soap_1.2.0.v200806030421/lib/saaj.jar
E:/eclipse/plugins/javax.xml.rpc_1.1.0.v200806030420/lib/jaxrpc.jar
E:/eclipse/plugins/javax.wsdl_1.5.1.v200806030408.jar
E:/eclipse/plugins/org.apache.commons.logging_1.0.4.v20080605-1930.jar

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值