关于webservice如何建立再次就不再详细介绍,请看baidu相关文档:http://wenku.baidu.com/view/6674b87a5acfa1c7aa00cc45.html
在此只写有关webservice传输是对象的开发的简单实例,
服务器端:
po:Hello.java
接口:IHeloWebService
实现类:HeloWebServiceImpl
/**
* 该类必须序列化
*/
public class Hello implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package service;
import po.Hello;
//Generated by MyEclipse
/**
* 服务端接口
*/
public interface IHeloWebService {
public Hello example();
}
package service;
import po.Hello;
/**
* 服务端实现类
*/
public class HeloWebServiceImpl implements IHeloWebService {
public Hello example() {
Hello hello = new Hello();
hello.setId("11");
hello.setName("Hello");
return hello;
}
}
服务端:services.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>HeloWebService</name>
<serviceClass>service.IHeloWebService</serviceClass>
<implementationClass>
service.HeloWebServiceImpl
</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service></beans>
客户端:
客户端获得自定义对象包路径必须和服务器端相同,当然在客户端也可以不用建该对象,可以将客户端的自定义对象打成jar包,然后在客户端引用。
我猜想用反射也可以实现改对象,但目前没有写相关例子。
import java.io.Serializable;
public class Hello implements Serializable {
/**
*客户端必须有与服务器端相同的自定义对象
*/
private static final long serialVersionUID = 1L;
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package client;
import po.Hello;
public interface IClientHelloManager {
/*
*该方法名必须和服务接口一致
*/
public Hello example();
}
package client; import java.net.MalformedURLException; //import java.net.URL; //import org.codehaus.xfire.client.Client; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; import po.Hello; public class ServicesClient { public static void main(String[] arg) throws MalformedURLException, Exception { String xml = "http://localhost:8080/web/services/HeloWebService"; ObjectServiceFactory objectServiceFactory = new ObjectServiceFactory(); Service serviceModel = objectServiceFactory .create(IClientHelloManager.class); XFireProxyFactory xFireProxyFactory = new XFireProxyFactory(); IClientHelloManager service = (IClientHelloManager) xFireProxyFactory .create(serviceModel, xml); Hello lHello = service.example(); System.out.println(lHello.getId()); System.out.println(lHello.getName()); // Client client = new Client(new URL( // "http://localhost:8080/web/services/HeloWebService?wsdl")); // Object[] rsult = client.invoke("example", new Object[] { "hello" }); // Hello hello = (Hello) rsult[0]; // System.out.println(); } }