您的位置:首页 > 大数据 > 人工智能

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

2013-12-29 13:08 661 查看
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个积分而已

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

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

----------------------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java webservice axis