Axis传递Pojo对象
(1)编写服务器端Java程序
//===========================================================
//传递Java对象的服务类程序 author:曹翔
//===========================================================
package com.ruix.service;
/**
* 传递Java对象的服务类程序
* @author caoxiang
* @version 1.0
*/
public class PojoService {
//用户对象
static User user = new User();
/**
* 传递对象的方法
* @param user
* 用户对象
* @return
* 返回0传递成功,返回1传递失败
*/
public synchronized int sendBo(User user) {
//默认为1,传递失败
int result = 1;
//判断传递的对象是否为空
if (user.getUsername().length() > 0 && user.getPassword().length() > 0) {
this.user = user; //如果发送成功了,设置User对象
result = 0;//成功
} else {
result = 1;//失败
}
//返回
return result;
}
/**
* 清空对象
*
*/
public void clearBo() {
this.user = null;
//调用垃圾收集,收集清理过的对象空间
System.gc();
}
/**
* 返回对象
* @return
*/
public User getBo() {
//返回对象
return this.user;
}
}
(2)修改wsdd文件,加入如下代码:
<!-- 对象传递服务 add by caoxiang -->
<service name="PojoService" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="com.ruix.service.PojoService"/>
<parameter name="allowedRoles" value="caoxiang,caoxiang"/>
<requestFlow>
<handler name="logging" type="java:com.ruix.service.LogHandler">
<parameter name="filename" value="c://MyService.log"/>
</handler>
<handler name="authen" type="java:com.ruix.service.AuthenticationHandler"/>
</requestFlow>
<beanMapping languageSpecificType="java:com.ruix.service.User" qname="ns:User" xmlns:ns="urn:BeanService"/>
</service>
(3)客户端访问代码如下:
/**
* 测试程序 java po 对象传递
*
*/
public void send(User user_bo) {
try{
String helloWorldURL="http://localhost:5200/xfire_sample/services/HelloWorldService";
String endpoint = "http://localhost:5200/testServer/services/PojoService";
//String endpoint = "http://localhost:9080/axis/services/HelloWorldService";
Integer i1 = new Integer(1);
Integer i2 = new Integer(2);
String user= new String("1");
String password=new String("2");
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
QName qn = new QName("urn:BeanService", "User");
call.registerTypeMapping(User.class, qn,
new BeanSerializerFactory(User.class, qn),
new BeanDeserializerFactory(User.class, qn));
//set data
call.setOperationName(new QName("urn:PojoService", "sendBo"));
Object[] params = new Object[] { user_bo };
//设置用户名和密码
//call.setUsername("caoxiang");
call.getMessageContext().setUsername("caoxiang");
call.getMessageContext().setPassword("caoxiang");
//call.addParameter("o", XMLType.xsd, ParameterMode.IN);
call.addParameter("users", XMLType.XSD_ENTITY, ParameterMode.IN);
call.setReturnType(XMLType.XSD_INT);
Integer bv = null;
List list = new ArrayList();
list.add(user_bo);
if(call!=null) {
bv = (Integer) call.invoke(params);
}
if(bv.toString().equals("0")) {
System.out.println("传递成功了" );
} else {
System.out.println("传递失败了" );
}
call.removeAllParameters();
call.setOperationName(new QName("urn:PojoService", "getBo"));
call.setReturnType(qn, User.class);
User resultData = (User)call.invoke(new Object[] {});
System.out.println();
System.out.println();
System.out.println("用户名: " + resultData.getUsername());
}
catch(Exception e){
e.printStackTrace();
}
}
程序代码如上,有问题可以和我多多联系,需要完整代码的,留下Email