XFire是下一代java SOAP框架。 XFire提供了非常方便的API,使用这些API可以开发面向服务(SOA)的程序。
它支持各种标准,性能优良(基于低内存的STAX模型)。
第一步,创建一个Web Project (XFire1)
第二步,修改XFire1的web.xml配置文件
由于XFire会使用XfireServlet,负责提供Web Services,并提供每个Web Service的WSDL
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>XFireServlet</servlet-name> <display-name>XFire Servlet</display-name> <!-- 在web.xml文件中定义一个xfireServlet,负责提供Web Services, 并提供每个Web Service的WSDL。如果你发布一个Web Service(BookService),你可以通过 http://<server_url[:port]>/<context>/services/BookService来访问这个Web Service http://<server_url[:port]>/<context>/services/BookService?WSDL来访问Web Service的WSDL信息 --> <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>
第三步,创建接口类和实现类
package wei.peng.xfire1; /** * 接口类 HelloService * @author WPeng * @time 2011-3-14 下午03:25:56 * @email [email protected] */ public interface HelloService { public String hello(String name); }
package wei.peng.xfire1; /** * 实现类 HelloServiceImpl * @author WPeng * @time 2011-3-14 下午03:26:08 * @email [email protected] */ public class HelloServiceImpl implements HelloService { @Override public String hello(String name) { if(name == null){ return "Hello Guest"; } return "Hello " + name; } }
第四步,在WEB-INF/src/META-INF/xfire目录下创建一个services.xml配置文件
<beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <!-- 服务名称 --> <name>HelloService</name> <!-- 命名空间 --> <namespace>http://localhost:10000/HelloService</namespace> <!-- 服务接口 --> <serviceClass>wei.peng.xfire1.HelloService</serviceClass> <!-- 服务实现类 --> <implementationClass>wei.peng.xfire1.HelloServiceImpl</implementationClass> </service> </beans>
第五步,发布开发的Web Service
第六步,使用Xfrie的Client API消费Web Services
package wei.peng.client.test; import java.net.MalformedURLException; import java.net.URL; import org.codehaus.xfire.client.Client; public class TestClient_3_XFire { public static void main(String[] args) { try { Client client = new Client(new URL("http://localhost:10000/XFire1/services/HelloService?wsdl")); Object[] results = client.invoke("hello", new Object[]{"wei.peng"}); System.out.println(results[0]); } catch (MalformedURLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }