1.导入xfire需要的包,这里使用的是xfire-1.2.6版本。需要导入的包有:
activation-1.1.jar , commons-codec-1.3.jar ,
commons-httpclient-3.0.jar,commons-logging-1.0.4.jar,jaxb-api-2.0.jar,jaxb-impl-2.0.1.jar,
jaxen-1.1-beta-9.jar,jdom-1.0.jar,jsr173_api-1.0.jar,mail-1.4.jar,spring.jar(这里的是 2.0
以上的包) , stax-api-1.0.1.jar , wsdl4j-1.6.1.jar , wss4j-1.5.1.jar , wstx-asl-3.2.6.jar , xbean-2.2.0.jar ,
xbean-spring-2.8.jar,xfire-all-1.2.6.jar,xfire-jsr181-api-1.0-M1.jar,XmlSchema-1.1.jar,
xmlsec-1.3.0.jar
2.在自己的web.xml文件中加入xfire的servlet。
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
3.编写自己的webservice接口
import java.rmi.Remote;
public interface IHelloXFire extends Remote{
public String hello(String name);
public Float add(Float a,float b);
}
4.编写自己的webservice接口实现
import webservice.IHelloXFire;
public class HelloXFire implements IHelloXFire{
@Override
public String hello(String name) {
// TODO Auto-generated method stub
System.out.println("hello " + name +" by xfire");
return "webservice.impl.HelloXFire.hello() execute";
}
@Override
public Float add(Float a,float b) {
// TODO Auto-generated method stub
return a+b;
}
}
5.编写services.xml文件放到META-INF/xfire下,[META-INF文件夹复制到WEB-INF下]
<?xml version="1.0" encoding="utf-8" ?>
<beans>
<service xmlns="http://xfire.codehaus.org/config/1.0">
<name>HelloXFire</name>
<namespace>http://simple.xfire.webservice/HelloXFire</namespace>
<serviceClass>webservice.IHelloXFire</serviceClass>
<implementationClass>webservice.impl.HelloXFire</implementationClass>
<scope>request</scope>
</service>
</beans>
6.启动web应用后,浏览器中输入http://localhost:8080/MgXFire/services/,如果看到有列出webservice接口列表则说明webservice服务端运行成功。
7.编写webservice client来调用webservice。
package webservice.client;
import java.net.MalformedURLException;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import webservice.IHelloXFire;
public class HelloXFireClient {
public static void main(String[] args) {
String url = "http://127.0.0.1:8080/MgXFire/services/HelloXFire";
Service serviceModel = new ObjectServiceFactory().create(IHelloXFire.class);
try {
IHelloXFire service = (IHelloXFire) new XFireProxyFactory().create(serviceModel,url);
String result = service.hello(System.getProperty("user.name"));
System.out.println("result = " + result);
Float returnValue = service.add(new Float(3.2),new Float(2.8));
System.out.println("returnValue = " + returnValue);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
运行截图:
客服端:
result = webservice.impl.HelloXFire.hello() execute
returnValue = 6.0
服务器端:
hello Administrator by xfire
注意:webservice的接口一定要是同一个class,如果测试客户端不是在服务器端编写的话,就找不到webservice接口了。于是,我们需要将webservice接口export到处为jar文件,引入到自己的测试客户端。