现在的位置: 首页 > 综合 > 正文

axis1.4部署webService 读取和响应Header信息\传送文件\BasicHandler\ SimpleChain\传递对象集合等测试

2013年03月27日 ⁄ 综合 ⁄ 共 18130字 ⁄ 字号 评论关闭

axis1.4部署webService 读取和响应Header信息\BasicHandler\ SimpleChain等测试

webSevice开发指南+项目测试(已有所相关的jar包)+源码+部署相关配置wsdd文件,内有说明 下载:http://download.csdn.net/detail/liangrui1988/6783867

代码太多,不好全贴出来,部分代码:

public class HelloworldJWS {
	
	public String helloJWS(int a,int b){
		String result=a+"+"+b+"="+(a+b);
		System.out.println(result);
		return result;
	}
	
}

package org.rui;

import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class JwsTest1 {
 public static void main(String[] args) throws ServiceException, RemoteException {
	
	 System.out.println("hello");
	 String url="http://localhost:8080/axis/HelloworldJWS.jws";
	 
	 Service service=new Service();
	 
	Call call= (Call) service.createCall();
	//目标url
	call.setTargetEndpointAddress(url);
	//操作    方法名称
	call.setOperationName(new QName(url,"helloJWS"));
     //调用  传入参数
	String result=(String) call.invoke(new Object[]{5,6});
	
	System.out.println(result);
 }

}

----------------------------------------------------------------------------------------------------

package org.wsdd;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class Address implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = -7385190737041810131L;

	
	private Integer identifier;
	private String address;
	private String city;
	private String province;
	private String country;
	private String postalcode;
	private String[] array;
	private List<Integer> list;
    private boolean exist;
    
   

	public boolean isExist() {
		return exist;
	}



	public void setExist(boolean exist) {
		this.exist = exist;
	}






	public Address(){
		list=new ArrayList<Integer>();
		list.add(1);
		list.add(2);
		list.add(3);
	}

	
	
	


	//=====================
	public Integer getIdentifier() {
		return identifier;
	}

	public void setIdentifier(Integer identifier) {
		this.identifier = identifier;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getCity() {
		return city;
	}

	public void setCity(String city) {
		this.city = city;
	}

	public String getProvince() {
		return province;
	}

	public void setProvince(String province) {
		this.province = province;
	}

	public String getCountry() {
		return country;
	}

	public void setCountry(String country) {
		this.country = country;
	}

	public String getPostalcode() {
		return postalcode;
	}

	public void setPostalcode(String postalcode) {
		this.postalcode = postalcode;
	}

	public String[] getArray() {
		return array;
	}

	public void setArray(String[] array) {
		this.array = array;
	}

	public List<Integer> getList() {
		return list;
	}

	public void setList(List<Integer> list) {
		this.list = list;
	}

	
}

package org.wsdd;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.wsdd.Address;
/**
 * 用于服务器端
 * .wsdd文件
 * 
 * <deployment xmlns="http://xml.apache.org/axis/wsdd/" 
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <!--名称 和服务类型-->
	<service name="AddressManager" provider="java:RPC">
		<!--允许的方法-->
		<parameter name="allowedMethods" value="*"/>
		<!--类路径-->
         <parameter name="className" value="org.wsdd.AddressManager"/>
		  <!-- 范围-->
		<parameter name="scope" value="request"/>  

		<!--qname里的address要和程序里的new QName("urn:addressManager","Address")里面后面的值相同-->
       <beanMapping qname="myNSD:Address" xmlns:myNSD="urn:AddressManager"
	   languageSpecificType="java:org.wsdd.Address"/>
	  
	</service>
</deployment>

 * @author lenovo
 *
 */
public class AddressManager {
	
	public List<Address> getAddressList(){
		List<Address> list=new ArrayList<Address>(); 
		Address address=new Address();
		 address.setAddress("莫斯科..88号");
		 address.setCity("广州");
		 address.setCountry("88");
         address.setExist(true);
         address.setIdentifier(110);
         address.setArray(new String[]{"a","b","c"});
         address.setPostalcode("1000088");
         address.setProvince("ddss");
		 
         Address add=new Address();
         add.setAddress("莫斯科..88号2");
         add.setCity("beijing");
         add.setCountry("99");
         add.setExist(false);
         add.setIdentifier(120);
         add.setArray(new String[]{"c","d","f"});
         add.setPostalcode("66000888");
         add.setProvince("湖北");
         
         //================
         list.add(address);
         list.add(add);
         
		 return list;
	}
	
	
	//
	public List<Address> setAddress(List<Address> list){
		return list;
	}
	//
	public Map<Integer,Address> getAddressMap(){
		
		Map<Integer,Address> map=new HashMap<Integer,Address>();
		Address address=new Address();
		 address.setAddress("莫斯科..88号");
		 address.setCity("广州");
		 address.setCountry("88");
        address.setExist(true);
        address.setIdentifier(110);
        address.setArray(new String[]{"a","b","c"});
        address.setPostalcode("1000088");
        address.setProvince("湖北");
		 
        map.put(address.getIdentifier(),address);
        
        Address add=new Address();
        add.setAddress("莫斯科..88号2");
        add.setCity("beijing");
        add.setCountry("99");
       add.setExist(false);
        add.setIdentifier(120);
        add.setArray(new String[]{"c","d","f"});
        add.setPostalcode("66000888");
        add.setProvince("湖北");
        
        map.put(add.getIdentifier(),add);
        
        return map;
        
	}
	
	public Map<Integer,Address> setAddressMap(Map<Integer,Address> map){
     return map;		
	}
}

package org.rui;

import java.beans.BeanDescriptor;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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;
import org.wsdd.Address;

import com.sun.corba.se.impl.encoding.OSFCodeSetRegistry.Entry;
/**
 * 用于浏览器端
 * 
 * @author lenovo
 *
 */
public class ClientAddress {

	
	public static void main(String[] args) {
		
		//getServiceList();
		//setServiceList();
		//getServiceMap();
		setServiceMap();
		 
	}
    
	public static void getServiceList(){
		
		String url="http://localhost:8080/axis/services/AddressManager";
		Service service=new Service();
		try {
			Call call=(Call) service.createCall();
			
			
			QName qName=new QName("urn:AddressManager","Address");
			call.registerTypeMapping(Address.class,
					qName,
					new  org.apache.axis.encoding.ser.BeanSerializerFactory(Address.class,qName), 
					new  org.apache.axis.encoding.ser.BeanDeserializerFactory(Address.class,qName));
			
			//url
			call.setTargetEndpointAddress(new java.net.URL(url));
			//类名 方法名
			call.setOperationName(new QName("AddressManager","getAddressList"));
			//返回类型
			call.setReturnClass(ArrayList.class);
			Object obj[]=null;
			//
			List<Address> list=(ArrayList)call.invoke(obj);
			System.out.println(list.size());
			System.out.println("=-------getServiceList--------");
			for(Address add:list){
				System.out.println("getAddress:"+add.getAddress()+"\t"+
						"getCity:"+add.getCity()+"\t"+
						"getCountry:"+add.getCountry()+"\t"+
						"getPostalcode:"+add.getPostalcode()+"\t"+
						"getProvince:"+add.getProvince()+"\t"+
						"getIdentifier:"+add.getIdentifier()+"\t"+
						"getArray:"+add.getArray()+"\t"+
						"isExist:"+add.isExist()+"\t"+
						"getList:"+add.getList());
				
			}
			
			
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}
	
	
	//
	public static void setServiceList() {
		String url="http://localhost:8080/axis/services/AddressManager";
		Service service=new Service();
		
		//add
		List<Address> list=new ArrayList<Address>(); 
		Address address=new Address();
		 address.setAddress("莫斯科..88号");
		 address.setCity("广州");
		 address.setCountry("88");
        address.setExist(true);
         address.setIdentifier(110);
         address.setArray(new String[]{"a","b","c"});
         address.setPostalcode("1000088");
		 
         Address add=new Address();
         add.setAddress("莫斯科..88号2");
         add.setCity("beijing");
         add.setCountry("99");
         add.setExist(false);
         add.setIdentifier(120);
         add.setArray(new String[]{"c","d","f"});
         add.setPostalcode("66000888");
         
         //================
         list.add(address);
         list.add(add);
         
         //service
         try {
			Call call=(Call) service.createCall();

			//要和配制文件中的qname一致
			QName qName=new QName("urn:AddressManager","Address");
			//映射对象的类型 
			call.registerTypeMapping(Address.class,
					qName,
					new  org.apache.axis.encoding.ser.BeanSerializerFactory(Address.class,qName), 
					new  org.apache.axis.encoding.ser.BeanDeserializerFactory(Address.class,qName));
			
			//url
			call.setTargetEndpointAddress(new java.net.URL(url));
			//类名 方法名
			call.setOperationName(new QName("AddressManager","setAddress"));
			//返回类型
			call.setReturnClass(ArrayList.class);
			//参数
			call.addParameter("list", XMLType.XSD_ANYTYPE,
					ParameterMode.IN);
			
			List resultList=(ArrayList) call.invoke(new Object[]{list});
			System.out.println(resultList.size());
			
			System.out.println("=-------setServiceList--------");
			for(Address tempAdd:list){
				System.out.println(tempAdd.getAddress()+"\t"+
						tempAdd.getCity()+"\t"+
						tempAdd.getCountry()+"\t"+
						tempAdd.getPostalcode()+"\t"+
						tempAdd.getProvince()+"\t"+
						tempAdd.getIdentifier()+"\t"+
						tempAdd.getArray()+"\t"+
						tempAdd.isExist()+"\t"+
						tempAdd.getList());
				
				
			}
			
			
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
		
	}
	
//==========================map==============getServiceMap======================
	public static void getServiceMap(){
		String url="http://localhost:8080/axis/services/AddressManager";
		Service service=new Service();
		
		try {
			Call call=(Call) service.createCall();
			
			//和配置文件qname中一致
			QName qn=new QName("urn:AddressManager","Address");
			//数据对象映射  可序列化 并行序列化
			call.registerTypeMapping(Address.class,qn,
					new  org.apache.axis.encoding.ser.BeanSerializerFactory(Address.class,qn), 
					new  org.apache.axis.encoding.ser.BeanDeserializerFactory(Address.class,qn));
			
			call.setTargetEndpointAddress(url);
			//服务名 和方法
			call.setOperationName(new QName("AddressManager","getAddressMap"));
			//返回类型
			call.setReturnClass(Map.class);
			//调用 服务
			Map<Integer,Address> map=(Map<Integer,Address>)call.invoke(new Object[]{});
			//获取从服务端接收的数据
			System.out.println(map.size()+"======getServiceMap=========");
			for(java.util.Map.Entry<Integer, Address> entry :map.entrySet()){				
				System.out.println("/nkey:"+entry.getKey()+"==================");
				Address add=entry.getValue();
				System.out.println("getAddress:"+add.getAddress()+"\t"+
						"getCity:"+add.getCity()+"\t"+
						"getCountry:"+add.getCountry()+"\t"+
						"getPostalcode:"+add.getPostalcode()+"\t"+
						"getProvince:"+add.getProvince()+"\t"+
						"getIdentifier:"+add.getIdentifier()+"\t"+
						"getArray:"+add.getArray()+"\t"+
						"isExist:"+add.isExist()+"\t"+
						"getList:"+add.getList());
				
			}
			
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
//  ================================setServiceMap==================================
	public static void setServiceMap(){
		Map<Integer,Address> mapPara=new HashMap<Integer,Address>();
		
		
		Address address=new Address();
		 address.setAddress("莫斯科..88号");
		 address.setCity("广州");
		 address.setCountry("88");
       address.setExist(true);
        address.setIdentifier(110);
        address.setArray(new String[]{"a","b","c"});
        address.setPostalcode("1000088");
		 
        Address add1=new Address();
        add1.setAddress("莫斯科..88号2");
        add1.setCity("beijing");
        add1.setCountry("99");
        add1.setExist(false);
        add1.setIdentifier(120);
        add1.setArray(new String[]{"c","d","f"});
        add1.setPostalcode("66000888");
        
        mapPara.put(address.getIdentifier(), address);    
        mapPara.put(add1.getIdentifier(), add1); 
        
        //call serivce
        String url="http://localhost:8080/axis/services/AddressManager";
        Service service=new Service();
		
		try {
			Call call=(Call) service.createCall();
			
			//和配置文件qname中一致
			QName qn=new QName("urn:AddressManager","Address");
			//数据对象映射  可序列化 并行序列化
			call.registerTypeMapping(Address.class,qn,
					new  org.apache.axis.encoding.ser.BeanSerializerFactory(Address.class,qn), 
					new  org.apache.axis.encoding.ser.BeanDeserializerFactory(Address.class,qn));
			
			call.setTargetEndpointAddress(url);
			//服务名 和方法
			call.setOperationName(new QName("AddressManager","setAddressMap"));
			//返回类型
			call.setReturnClass(Map.class);
			//参数
			call.addParameter("map", XMLType.XSD_ANYTYPE,
					ParameterMode.IN);
			
			//调用 服务 传入map 再返回map
			Map<Integer,Address> map=(Map<Integer,Address>)call.invoke(new Object[]{mapPara});
			//获取从服务端接收的数据
			System.out.println(map.size()+"======getServiceMap=========");
			for(java.util.Map.Entry<Integer, Address> entry :map.entrySet()){				
				System.out.println("/nkey:"+entry.getKey()+"==================");
				Address add=entry.getValue();
				System.out.println("getAddress:"+add.getAddress()+"\t"+
						"getCity:"+add.getCity()+"\t"+
						"getCountry:"+add.getCountry()+"\t"+
						"getPostalcode:"+add.getPostalcode()+"\t"+
						"getProvince:"+add.getProvince()+"\t"+
						"getIdentifier:"+add.getIdentifier()+"\t"+
						"getArray:"+add.getArray()+"\t"+
						"isExist:"+add.isExist()+"\t"+
						"getList:"+add.getList());
				
			}
			
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        
	}
	
	
	
}

----------------------------------------------------------------------------------------------------

package org.wsdd;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.activation.DataHandler;

/**
 * 接收客户端传送过来的文件
 * @author lenovo
 *
 */
public class FileReceiverServer {
	
	public String receive(DataHandler handler,String fileName){
		
		System.out.println(fileName+"|"+handler.getContentType());
		File file=new File(fileName);
		if("".equals(fileName)||handler==null||fileName==null){
			return "传送文件或名为null";
		}
		
		InputStream is = null;
		FileOutputStream fos= null;
		//存储路径
		//String path=request.getSession().getServletContext().getRealPath("/downImage");
		//String path=FileReceiverServer.class.getResource("FileReceiverServer.class").getPath();
		//System.out.println("path:"+path);
		try {
		//获取文件流
		is=handler.getInputStream();
		//输出流
		fos=new FileOutputStream(fileName);
		
		
		//写入文件流到  输出流
		byte[] bytes =new byte[1024];
		
		while(is.read(bytes)!=-1){
			fos.write(bytes);
		}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
				try {
					if(is!=null){
					is.close();
					}
					
					if(fos!=null){
						fos.close();
						}
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			
		}
		
		return "文件已保存到服务器"+file.getAbsolutePath();
	}

}

package org.rui;


import java.rmi.RemoteException;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import javax.xml.rpc.encoding.XMLType;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory;
import org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory;

/**
 * 文件传送测试
 * -p 修改端口号
 * -l 修改uri
 * java org.apache.axis.utils.tcpmon 调试
 *
 *通过服务端提供的wsdl信息来生成客户端调用的 框架
 * java -Djava.ext.dirs={axis-lib} org.apache.axis.wsdl.WSDL2java --server-side dsmp.wsdl
 * 
 * 
 * @author lenovo
 *
 */
public class ClientFileSend {
	
	public static void main(String[] args) {

		
		Service service=new Service();
		String url="http://localhost:8080/axis/services/FileReceiverServer";
		try {
			Call call=(Call) service.createCall();
			call.setTargetEndpointAddress(url);
		call.setOperationName(new QName(url,"receive"));
		
		
		QName qn=new QName("DataHandler","myNs:DataHandler");
		call.registerTypeMapping(DataHandler.class, qn, 
				JAFDataHandlerSerializerFactory.class
				,JAFDataHandlerDeserializerFactory.class);
		
		call.addParameter("s1", qn, ParameterMode.IN);
		call.addParameter("s2", XMLType.XSD_STRING, ParameterMode.IN);
		
		//返回内型
		call.setReturnClass(String.class);
		
		//传送的文件 "F:\\testFile.txt"
		DataHandler dh=new DataHandler(new FileDataSource("F:\\testFile.txt"
		//ClientFileSend.class.getResource("testFile.txt").getPath()
				));
		System.out.println(dh.getName());
		
		//DataHandler dhs=null;
		String result =(String) call.invoke(new Object[]{dh,"testFile.txt"});
		
		System.out.println("result:"+result);
			
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}

}

----------------------------------------------------------------------------------------------------

package org.wsdd;
/**
 * 把此文件放到axis WEB-INF下  发布sevices命令
 * 
 * <deployment xmlns="http://xml.apache.org/axis/wsdd/" 
   xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <!--名称 和服务类型-->
	<service name="HellowroldWsdd" provider="java:RPC">
		<!--允许的方法-->
		<parameter name="allowedMethods" value="*"/>
		<!--类路径-->
         <parameter name="className" value="org.wsdd.HellowroldWsdd"/>
		 <!-- 范围-->
		<parameter name="scope" value="request"/>               
	</service>
   </deployment>


 * cmd  编译xml命令 *  切记 一定要在tomcat启动了才能编议
 * java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient deploy.wsdd
 * ===================================================================
 *  取消sevices命令   undeploy.wsdd 文件名随便写
 *  <undeployment xmlns="http://xml.apache.org/axis/wsdd/">
    <service name="HellowroldWsdd"/>
     </undeployment>

   cmd命令( 也可以写在.bat文件,直接运行)     
   java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient undeploy.wsdd

 * 
 * @author liangrui
 *
 */
public class HellowroldWsdd {
	
	private int requestCount=0;
	public String hello(String name){
		requestCount++;
		System.out.println("hello:"+name);
		System.out.println("requestCount:"+requestCount);
		return "hello:"+name;
	}

	
	public Float helloWsdd(Float f,float ff){
		requestCount++;
		System.out.println("requestCount:"+requestCount);
		System.out.println("f="+f+"\tff="+ff);
		return f+ff;
	}
}

package org.rui;

import java.rmi.RemoteException;

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

import org.apache.axis.AxisFault;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class WsddTest {
	
	public static void main(String [] args) {
		//test1();
		
		String url="http://localhost:8080/axis/services/HellowroldWsdd";
		Service service=new Service();
		try {
			Call call=(Call)service.createCall();
			//url
			call.setTargetEndpointAddress(url);
			//指定方法名
			call.setOperationName(new QName(url,"helloWsdd"));
			//调用 传入对应的参数
			Float result=(Float) call.invoke(new Object[]{1.50F,6.50F});
		
			System.out.println("result: "+result);
			
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (AxisFault e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	
	//test1
	private static void test1() {
		String url="http://localhost:8080/axis/services/HellowroldWsdd";
		Service service=new Service();
		try {
			Call call=(Call)service.createCall();
			//url
			call.setTargetEndpointAddress(url);
			//指定方法名
			call.setOperationName(new QName(url,"hello"));
			//调用 传入对应的参数
			String result=(String) call.invoke(new Object[]{"rui"});
		
			System.out.println("result: "+result);
			
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (AxisFault e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

还是请下载项目吧,太多了。。。。。。。。对不住了,反正才需要1个积分而已
----------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------

抱歉!评论已关闭.