用Xfire搭建WebService
1、创建web工程
2、导入xfire相关jar包
3、编写web.xml
4、编写 服务端代码
5、编写webservice配置文件
6、发布工程
下面讲一个完整的入门实例。
编写web.xml
<!-- 配置xfireservlet -->
<servlet>
<display-name>XFire Servlet</display-name>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
</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>
编写 服务端代码
package net.itdos.xfire.service;
public interface HelloWorldService {
public abstract String sayHello(String name);
}
package net.itdos.xfire.service;
public class HelloWorldServiceImpl implements HelloWorldService {
public String sayHello(String name){
System.out.println(name);
return "hello " + name;
}
}
编写webservice配置文件
src/META-INF/xfire/services.xml
<?xml version="1.0"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<!--name可以随便修改-->
<name>HelloWorldService</name>
<!--namespace可以随便修改-->
<namespace>urn:HelloWorldService:service:xfire:itdos:cn</namespace>
<!--serviceClass是接口文件路径-->
<serviceClass>net.itdos.xfire.service.HelloWorldService</serviceClass>
<!--implementationClass是接口实现类路径-->
<implementationClass>net.itdos.xfire.service.HelloWorldServiceImpl</implementationClass>
</service>
</beans>
客户端测试1 用axis测试
package net.itdos.axis.client;
import java.net.URL;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
/**
* xfire helloworld客户端代码
*
*/
public class XfireHelloWorldTest {
public static void main(String[] args) throws Exception {
//创建服务对象
Service service = new Service();
//通过服务对象创建调用对象
Call call = (Call)service.createCall();
String url = "http://localhost:8080/WebServiceXfireServiveDemo/servlet/XFireServlet/HelloWorldService";
//设置调用对象的目标地址
call.setTargetEndpointAddress(new URL(url));
//设置对用对象的操作明
call.setOperationName("sayHello");
Object obj = call.invoke(new Object[]{"tom"});
System.out.println(obj);
}
}
客户端测试2 用xfire测试
package net.itdos.client.xfire;
import java.net.URL;
import org.codehaus.xfire.client.Client;
public class HelloWorldText {
public static void main(String[] args) {
String url = "http://localhost:8080/WebServiceXfireServiveDemo/servlet/XFireServlet/HelloWorldService?wsdl";
try {
Client client = new Client(new URL(url));
Object[] obj = client.invoke("sayHello", new Object[] { "tom" });
System.out.println(obj[0]);
} catch (Exception e) {
}
}
}
具体的开发步骤如下:
1.先用Eclipse新建一个web Project工程
2、定义Web Service的接口,代码见上面的接口定义。
package test;
import java.util.*;
public interface HelloService {
public String sayHello(String ttt) {
return "Hello, "+ttt;
}
}
3、编写XFire要求的WebSevice定义描述文件,如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>HelloService</name>
<namespace>http://test/HelloService</namespace>
<serviceClass>test.HelloService</serviceClass>
<implementationClass>test.HelloService </implementationClass>
</service>
</beans>
如果上一个元素<serviceClass>包含了一个接口,那么相应的实现类必须在这里指定。
此文件放在src/META-INF/xfire/services.xml,编译时会自动编译到classes的相应目录下面。如果没有编译过去请手动拷贝过去.
请注意,此文件一定要放到与HelloService.java相同的目录下面,否则会出错。
4、在Web.xml中配置XFire需要用到的Servlet,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
</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>
</web-app>
如果上一个元素<serviceClass>包含了一个接口,那么相应的实现类必须在这里指定。
访问http://localhost:8080/test/services/HelloService?WSDL
到这里,我们的Web Services配置完成了。
xfire客户端所需的包:
commons-httpclient-3.0.jar
jaxen-1.1-beta-9.jar
jdom-1.0.jar
stax-api-1.0.1.jar
stax-utils-20040917.jar
wsdl4j-1.6.1.jar
wss4j-1.5.0.jar
wstx-asl-3.2.0.jar
xfire-all-1.2.4.jar
xfire-jsr181-api-1.0-M1.jar
xml-apis-1.0.b2.jar
XmlSchema-1.1.jar
xmlsec-1.3.0.jar