一、 用xfire发布WebService
1、完成接口、实现类以及相关的bean代码编写
本示例中用到的接口、实现类、bean如下:
接口:
@WebService(name =
"HellowWord", targetNamespace =
"http://webserviceDemo/schema/HelloWord/")
@SOAPBinding(use =
SOAPBinding.Use.LITERAL, parameterStyle =
SOAPBinding.ParameterStyle.WRAPPED)
publicinterface HellowWord
{
@WebMethod(operationName =
"sayHellow", action =
"")
publicvoid sayHellow(
@WebParam(name =
"user", targetNamespace =
"") User user);
@WebMethod(operationName =
"sayAllHellow", action =
"")
publicvoid sayAllHellow(
@WebParam(name =
"users", targetNamespace =
"") List<User> users);
}
实现类:
@WebService(name =
"HellowWord", targetNamespace =
"http://webserviceDemo/schema/HelloWord/")
publicclass HelloWordImpl
implements HellowWord
{
publicvoid sayAllHellow(List<User> users)
{
if (null == users || users.size() <= 0)
{
System.out.println("No people!");
}
for (User user : users)
{
System.out.println(user.getUserName() +
" hellow!");
}
}
publicvoid sayHellow(User user)
{
if (null == user)
{
System.out.println("No people!");
}
System.out.println(user.getUserName() +
" hellow!");
}
}
使用到的自定义bean:
publicclass User
{
private String
userName;
privateintage;
private String
gender;
// get\set方法略
}
2、导入Xfire相关jar包
将已下载的相关xfire所有jar包导入工程(jar包没有按功能区分,有兴趣可以自己研究),本工程的导入方式为,在工程的最上层目录下新建一个lib/xfire目录,将相关jar包拷入该目录,本工程是用Eclips开发的,所以将本工程的.settings/org.eclipse.wst.common.component中添加上<wb-resource
deploy-path="/WEB-INF/lib" source-path="/lib/xfire"/>,最后执行导入工作,这样做有助于对工程不同功能的jar包进行管理。
3、添加xfire的配置文件
配置文件添加方法一:
在工程的src目录下新建META-INF\xfire\services.xml文件。
配置文件添加方法二:
该方法可以让工程的结构层次更清晰,在工程的最上层目录下新建conf\META-INF\xfire\services.xml文件,然后将conf目录下的内容设置为编译至WebRoot\WEB-INF\classes目录下即可,其实不论配置文件放在什么地方只要工程编译完成后,在WebRoot\WEB-INF\classes目录中有META-INF\xfire\services.xml即可。
4、完成services.xml配置
本工程配置示例:
<?xml
version="1.0"
encoding="UTF-8"?>
<beans
xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>HellWord</name>
<namespace>http://webserviceDemo/schema/HelloWord/</namespace>
<serviceClass>server.spi.HellowWord</serviceClass>
<implementationClass>server.impl.HelloWordImpl</implementationClass>
<serviceFactory>org.codehaus.xfire.jaxb2.JaxbServiceFactory</serviceFactory>
</service>
</beans>
配置文件解释:
<name>服务的名称</name>
<namespace>命名空间</namespace>
<serviceClass>接口</serviceClass>
<implementationClass>实现类</implementationClass>
<serviceFactory>如果在接口中加入标注,必须配置此项</serviceFactory>
5、完成web.xml配置
本工程的配置示例如下:
<!-- XFire配置 -->
<servlet>
<servlet-name>xfire</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xfire</servlet-name>
<url-pattern>/services/xfire/*</url-pattern>
</servlet-mapping>
注:
<servlet-name>、<url-pattern>任意。
6、测试是否发布成功
启动工程,在浏览器输入http://ip:port/SoapDemo/services/xfire /HellWord?wsdl(其中ip:port为部署工程的ip和端口),查看是否显示WSDL文件(具体wsdl文件是啥东东这里就不做描述了,大家可以自己网上查查),如果显示表示发布成功,否则定位看到底哪出现了问题。