首先,使用到的jar先导入项目中,
xbean-spring-2.8.jar, wsdl4j-1.6.1.jar, commons-httpclient-3.0.jar, commons-codec-1.3.jar, xfire-all-1.2.6.jar, xmlschema-1.1.jar, spring-1.2.6.jar,
commons-logging-1.0.4.jar, jdom-1.0.jar, 这9个包是xfire实现服务器端的webservice主要的包,包含访问webservice和生成webservice
1. 访问webservice文件:
public static String visit(String method, Object[] params) throws Exception{
Client client = new Client(new URL(URL_SPAC));
client.setTimeout(5000); //访问超过5秒钟超时
//设置访问的方法和参数
Object[] results = client.invoke(method, params);
return results[0].toString();
}
很简单,就这么几句代码就搞定。 URL_space为http://xxx:8080/WebServices/xxx.asmx?WSDL,就是webservice的访问地址,但一定要到 ?wsdl
暂时没有解决调用端使用数组参数。
2. 生成webservice
在src下新建 META-INF/xfire/services.xml 文件, 文件中这样写
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>webservice名称</name>
<serviceClass>java接口类路径</serviceClass>
<implementationClass>java接口实现类路径</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service>
</bean>
在web.xml中配置启动加载xfire的servlet类即可,代码如下:
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
这样,一个访问名称为 webservice名称 的webservice就启动起来了