当前位置: 代码迷 >> Web前端 >> WebService 开发 XFire 传送java对象
  详细解决方案

WebService 开发 XFire 传送java对象

热度:670   发布时间:2012-11-13 10:00:51.0
WebService 开发 XFire 传递java对象

1、当WebService 服务器端传过来的是简单的字符串时,我们直接取值就行。但如果传过来的是一个Javabean 对象时,直接取值的话会无法正常解析。这时我们在获取对象,得到对象的属性时,需要使用  getValue()来获取属性的值。

 

server_xfireClient client = new server_xfireClient();

server_xfirePortType service = client.getserver_xfireHttpPort();

User user = service.getUserInfo();  // 执行后WebService服务器返回User 对象

 /*

WebService 服务器端传过来的是简单的字符串时,我们直接取值就行。但如果传过来的是一个Javabean 对象时,直接取值的话会无法正常解析。这时我们在获取对象,得到对象的属性时,需要使用  getValue()来获取属性的值。

 

(1、当我们直接取出对象属性的值时:

 System.out.println("user--name:" + user.getName() + "==age:"+ user.getAge());

输出打印值:

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

user--name:javax.xml.bind.JAXBElement@ff2413==age:javax.xml.bind.JAXBElement@9980d5

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

 

(2、使用getValue()来获取属性的值:

 System.out.println("user--name:" + user.getName() .getValue()"==age:"+ user.getAge().getValue());

输出打印值:

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

user--name:lsxy==age:23 

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

*/

 

 

2、当客户端传递字符串给服务器端时,可以直接传递。但如果将javabean 对象传递给服务器端时就要使用ObjectFactory 来构建对象了,不然也会出现服务器端无法正常解析的现象。

ObjectFactory factory = new ObjectFactory();

User u = factory.createUser();

u.setName(factory.createUserName("EE"));

u.setAge(factory.createUserAge("27"));

service.addUser(u);

或者

ObjectFactory f = new ObjectFactory();
 User uu = new User();
 uu.setName(f.createUserName("QQ"));
 uu.setAge(f.createUserAge("24"));

 service.addUser(u);

 

我们可以发现User 对象的生成可以用WebService客户端自动生成的ObjectFactory 去构建也可以使用自动生成的User 直接new。

但user 对象的属性值却必须使用ObjectFactory 去创建。

查看WebService 自动生成的客户端代码中的User对象类中可以看到如下代码: 

public void setName(JAXBElement<String> value) {
        this.name = ((JAXBElement<String> ) value);
 }

setName 方法的中的参数并不是简单的字符串。

 

 

3、当客户端传递List 对象给服务器端时,也需要使用ObjectFactory  去构建数组对象。

ObjectFactory of = new ObjectFactory();

User u1 = new User();

u1.setName(of.createUserName("AA"));

u1.setAge(of.createUserAge("11"));

User u2 = new User();

u2.setName(of.createUserName("BB"));

u2.setAge(of.createUserAge("22"));

User u3 = new User();

u3.setName(of.createUserName("CC"));

u3.setAge(of.createUserAge("33"));

 

ArrayOfUser aou = of.createArrayOfUser();

aou.getUser().add(u1);

aou.getUser().add(u2);

aou.getUser().add(u3);

String usersString = service.addUsers(aou);  //传递数组对象给服务器端

/* 也可以直接使用对象定义数组 */

// ArrayOfUser aou = new ArrayOfUser();

// aou.getUser().add(u1);

// aou.getUser().add(u2);

// aou.getUser().add(u3);

// String usersString=service.addUsers(aou);

 

在进行WebService 的客户端开发工程中,有一个比较重要的自动生成的对象ObjectFactory 。

 

PS:具体的开发文档和源代码例子可以在我的资源“WebService之XFire开发文档和代码.rar” 中进行下载参考。

 

  相关解决方案