[url=http://www.hpgy.net/blog/12345679]个人博客:[/url][url]http://www.hpgy.net/blog/12345679/9/262_1.html[/url]
最近在产品开发中用到了XFire来实现WebService,现把项目中的使用体会和经验总结如下:
1. 相关资源
xFire相关jar包:
核心包:xfire-all-1.2.6.jar、xfire-jsr181-api-1.0-M1.jar;依赖包:XmlSchema-1.1.jar 、xmlsec-1.3.0.jar、xml-apis-1.0.b2.jar、wsdl4j-1.6.1.jar、wss4j-1.5.1.jar、wstx-asl-3.2.0.jar、stax-api-1.0.1.jar、stax-utils-20040917.jar、jdom-1.0.jar、jaxen-1.1-beta-9.jar、commons-httpclient-3.0.jar。
xFire的jar包和原工程的jar包容易发生冲突,是比较烦人的一件事;大家在使用中要特别注意。
2. 配置Web.xml
<!-- xfire 配置 -->
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class> org.codehaus.xfire.spring.XFireSpringServlet </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>
3. 编写Web Service实现类
这个和普通的Service类实现一样,一个接口,一个实现类,这里我们定义了一个简单数学计算求和的Service,代码如下:
Service接口类:MathService.java
package com.kuaff.xfire.samples;
public interface MathService {
public long add(int p1, int p2);
}
Service实现类:MathServiceImpl.java
package com.kuaff.xfire.samples;
public class MathServiceImpl implements MathService {
public long add(int p1, int p2) {
return p1 + p2;
}
}
4. 配置Service到Web应用中
编写Web Service的实现类后,接着我们把它集成到Spring中并向外暴露服务。首先,需要在spring配置文件中引入xfire相关配置文件,
引入配置如下:
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
然后配置Web Service业务逻辑的实现类,这个和一般的bean配置一样,如下:
<bean id="mathBean" class="com.kuaff.xfire.samples.MathServiceImpl" autowire="byName"/>
最后一步把mathBean配置成Web Service,向外暴露该服务的接口以便访问,配置如下:
<bean id="mathWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter"> <!-- WebService的名字 -->
<property name="xfire" ref="xfire" />
<property name="serviceBean" ref="mathBean" /> <!-- WebService的实现类bean -->
<property name="serviceClass" value="com.kuaff.xfire.samples.MathService" />
</bean>
5. 客户端访问
package com.kuaff.xfire.samples.client;
import org.codehaus.xfire.client.Client;
public class TestWebServiceClient {
public static void main(String[] args) {
int p1 = 3;
int p2 = 5;
Client client;
try {
client = new Client(new URL("http://localhost:8080/test/services/mathWebService?wsdl"));
Object[] results = client.invoke("add", new Object[] {p1,p2});
System.out.println((String) results[0]);
System.out.println(p1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
最近在产品开发中用到了XFire来实现WebService,现把项目中的使用体会和经验总结如下:
1. 相关资源
xFire相关jar包:
核心包:xfire-all-1.2.6.jar、xfire-jsr181-api-1.0-M1.jar;依赖包:XmlSchema-1.1.jar 、xmlsec-1.3.0.jar、xml-apis-1.0.b2.jar、wsdl4j-1.6.1.jar、wss4j-1.5.1.jar、wstx-asl-3.2.0.jar、stax-api-1.0.1.jar、stax-utils-20040917.jar、jdom-1.0.jar、jaxen-1.1-beta-9.jar、commons-httpclient-3.0.jar。
xFire的jar包和原工程的jar包容易发生冲突,是比较烦人的一件事;大家在使用中要特别注意。
2. 配置Web.xml
<!-- xfire 配置 -->
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class> org.codehaus.xfire.spring.XFireSpringServlet </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>
3. 编写Web Service实现类
这个和普通的Service类实现一样,一个接口,一个实现类,这里我们定义了一个简单数学计算求和的Service,代码如下:
Service接口类:MathService.java
package com.kuaff.xfire.samples;
public interface MathService {
public long add(int p1, int p2);
}
Service实现类:MathServiceImpl.java
package com.kuaff.xfire.samples;
public class MathServiceImpl implements MathService {
public long add(int p1, int p2) {
return p1 + p2;
}
}
4. 配置Service到Web应用中
编写Web Service的实现类后,接着我们把它集成到Spring中并向外暴露服务。首先,需要在spring配置文件中引入xfire相关配置文件,
引入配置如下:
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
然后配置Web Service业务逻辑的实现类,这个和一般的bean配置一样,如下:
<bean id="mathBean" class="com.kuaff.xfire.samples.MathServiceImpl" autowire="byName"/>
最后一步把mathBean配置成Web Service,向外暴露该服务的接口以便访问,配置如下:
<bean id="mathWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter"> <!-- WebService的名字 -->
<property name="xfire" ref="xfire" />
<property name="serviceBean" ref="mathBean" /> <!-- WebService的实现类bean -->
<property name="serviceClass" value="com.kuaff.xfire.samples.MathService" />
</bean>
5. 客户端访问
package com.kuaff.xfire.samples.client;
import org.codehaus.xfire.client.Client;
public class TestWebServiceClient {
public static void main(String[] args) {
int p1 = 3;
int p2 = 5;
Client client;
try {
client = new Client(new URL("http://localhost:8080/test/services/mathWebService?wsdl"));
Object[] results = client.invoke("add", new Object[] {p1,p2});
System.out.println((String) results[0]);
System.out.println(p1);
} catch (Exception e) {
e.printStackTrace();
}
}
}