用xfre创建webService很简单了
1.把需要的jar包复制到web项目的lib里
activation-1.1.jar
commons-codec-1.3.jar
commons-httpclient-3.0.jar
commons-logging-1.1.1.jar
jaxen-1.1-beta-9.jar
jdom-1.0.jar
log4j-1.2.15.jar
mail-1.4.jar
spring-1.2.6.jar
stax-api-1.0.1.jar
wsdl4j-1.6.1.jar
wstx-asl-3.2.0.jar
xbean-2.2.0.jar
xbean-spring-2.8.jar
xfire-all-1.2.6.jar
xml-apis-1.0.b2.jar
xmlParserAPIs-2.0.2.jar
XmlSchema-1.1.jar
2.在web.xml里添加如下配置
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
3.写个服务接口Server.java
package com.dahafo.webService;
/**
* @author Zevi Qian E-mail:gosun@foxmail.com
* @version 创建时间:2013-5-9 下午11:09:28
* 服务接口
*/
public interface Server {
public String say(String name);
public User getUser(User u);
}
实现接口 HelloServer.java
package com.dahafo.webService;
/**
* @author Zevi Qian E-mail:gosun@foxmail.com
* @version 创建时间:2013-5-9 下午11:12:06
* helloserverimpl
*/
public class HelloServer implements Server {
/* (non-Javadoc)
* @see com.dahafo.webService.Server#say(java.lang.String)
*/
@Override
public String say(String name) {
System.out.println("say方法被调用");
return "你好,"+name+"!欢迎使用webService";
}
/* (non-Javadoc)
* @see com.dahafo.webService.Server#getUser(com.dahafo.webService.User)
*/
@Override
public User getUser(User u) {
u.setId("new:"+u.getId());
u.setName("new:"+u.getName());
return u;
}
}
User.java类
package com.dahafo.webService;
/**
* @author Zevi Qian E-mail:gosun@foxmail.com
* @version 创建时间:2013-5-10 上午12:15:25
* 用户
*/
public class User {
private String id;
private String name;
public User() {
}
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;
}
}
4.发布服务
在src下创建META-INF ,在META-INF下创建xfire ,在xfire下创建services.xml 内容如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>service</name>
<serviceClass>com.dahafo.webService.Server</serviceClass>
<implementationClass>com.dahafo.webService.HelloServer</implementationClass>
</service>
</beans>
文件结构如下图
在src下创建log4j的配置文件,内容自己编。
5.把web项目部署到tomcat上
写个测试类测下
package com.dahafo.webService;
import java.net.MalformedURLException;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import sun.rmi.runtime.Log;
/**
* @author Zevi Qian E-mail:gosun@foxmail.com
* @version 创建时间:2013-5-9 下午11:27:45
* 类说明
*/
public class TestService {
/**
* @param args
*/
public static void main(String[] args) {
Service serviceModel = new ObjectServiceFactory().create(Server.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
String url ="http://localhost:8080/xfire_webService/services/service";
try {
Server s= (Server)factory.create(serviceModel, url);
System.out.println(s.say("zevi"));
User u=new User();
u.setName("小米");
User newu=s.getUser(u);
System.out.println("new id:"+newu.getId()+";new name:"+newu.getName());
} catch (MalformedURLException e) {
e.printStackTrace();
};
}
}
我的项目名称是xfire_webService,所以url就是http://localhost:8080/xfire_webService/services/service