XFire 是 Codehaus 開源框架,構建 POJO 與 SOA 之間的橋樑,核心優勢在於以極簡方式將普通 Java 物件發布為 Web Service,無需繼承特定基類、實現特定介面,大幅降低 SOA 實施門檻。
| 元件 | 版本建議 | 備註 |
|---|---|---|
| JDK | 1.4+ (JSR-181 需 5+) | 僅用 POJO 綁定 1.4 即可 |
| Servlet 容器 | Tomcat 5.0.30+ / WebSphere / WebLogic | 本文以 Tomcat 為例 |
| Xalan | 最新二進制包 | XFire 1.2.6 未內建,需自行下載 |
%TOMCAT_HOME%/webapps/XFire/
├── WEB-INF/
│ ├── web.xml
│ ├── lib/ # 放入 XFire 所有 jar + xalan jar
│ └── classes/
│ └── META-INF/xfire/
│ └── services.xml
<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>
<beans xmlns="https://XFire.codehaus.org/config/1.0">
</beans>
package org.vivianj.xfire.pojo;
public interface HelloWorldService {
String sayHello();
}
package org.vivianj.xfire.pojo;
public class HelloWorldServiceImpl implements HelloWorldService {
public String sayHello() {
return "Hello World!";
}
}
<service>
<name>HelloWorldService</name>
<namespace>https://vivianj.org/HelloWorldService</namespace>
<serviceClass>org.vivianj.xfire.pojo.HelloWorldService</serviceClass>
<implementationClass>org.vivianj.xfire.pojo.HelloWorldServiceImpl</implementationClass>
</service>
| 元素 | 說明 |
|---|---|
| name | 服務唯一名稱 |
| namespace | XML 命名空間 |
| serviceClass | 服務介面全名 |
| implementationClass | 實作類全名 |
WEB-INF/classeshttps://localhost:8080/XFire/services/HelloWorldService?wsdl
在實作類加上註解,無需 services.xml:
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class HelloWorldServiceImpl implements HelloWorldService {
@WebMethod
public String sayHello() { return "Hello World!"; }
}
需在 web.xml 加入 load-on-startup 並配置 Spring 掃描,或使用 XFire 的註解掃描機制。
XFire 最大化發揮 POJO 優勢,讓現有業務邏輯零侵入式暴露為 Web Service,是企業以低成本邁向 SOA 的最佳切入點。後續可探索 WS-Security、異步呼叫、Spring 整合等進階主題。