axis1.4部署webService 读取和响应Header信息\传送文件\
发布时间:2020-12-16 23:54:23 所属栏目:安全 来源:网络整理
导读:axis1.4部署webService 读取和响应Header信息BasicHandler SimpleChain等测试 webSevice开发指南+项目测试(已有所相关的jar包)+源码+部署相关配置wsdd文件,内有说明 下载:http://download.csdn.net/detail/liangrui1988/6783867 代码太多,不好全贴出来
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","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","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","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","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,"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,qn),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","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","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","setAddressMap")); //返回类型 call.setReturnClass(Map.class); //参数 call.addParameter("map",ParameterMode.IN); //调用 服务 传入map 再返回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,JAFDataHandlerSerializerFactory.class,JAFDataHandlerDeserializerFactory.class); call.addParameter("s1",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个积分而已 ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |