搭建Web Service需要的以下支持;
1. apache-cxf-2.6.14 官网下载即可
2. Eclipse Kepler J2ee版本或者其他的版本也可以的
3. Jboss 4.2.3GA
搭建步骤:
1. 将apache-cxf-2.6.14 解压,并放置到指定的目录下,以备后用;
2. 打开Eclipse配置cxf设置,window - preferences- web services-CXF 2.X preference
3. 打开Eclipse并新建一个Dynamic Web Project并修改Java 输出目录为WEB-INF/classes下
4. 将CXF lib加载到项目中
5. 在Web.xml中添加如下代码
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
6. 新建Web Service接口
package com.ws;
import javax.jws.WebService;
@WebService
public interface CXFWebService {
public String getUserInfo(String user);
}
7. 新建WebService接口实现类
package com.ws.impl;
import com.ws.CXFWebService;
public class CXFWebServiceImpl implements CXFWebService {
public String getUserInfo(String user) {
return "Hello " + user;
}
}
8. 在WEB-INF下新建一个cxf-config.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<jaxws:server id="testWebService"
serviceClass="com.ws.CXFWebService"
address="/user">
<jaxws:serviceBean>
<bean class="com.ws.impl.CXFWebServiceImpl" />
</jaxws:serviceBean>
</jaxws:server>
</beans>
其中jaxws:server中的
id:可以自定义,但不允许重复;
serviceClass:接口的全路径名;
address:WebService的地址的一部分,WebService发布之后,地址就是http://主机:端口/工程名/在web.xml文件中配置的CXFServlet的url模式,在cxf-servlet.xml文件的jaxws:server标签中配置的address属性的值?wsdl。以我的这个工程为例,主机是本地,端口是jboss默认的8080,工程名是“WebServiceServer”,在web.xml文件中配置的CXFServlet的url-pattern是“/services”,在cxf-servlet.xml文件的jaxws:server标签中配置的address属性的值“/user”,那么我的WebService的WSDL地址就是:http://localhost:8080/WebServiceServer/services/user?wsdl。
9. 启动Jboss Server,并输入http://localhost:8080/WebServiceServer/services/user?wsdl,若出现WSDL的XML格式文本内容表示Web Service服务发布成功了。
测试Web Service服务
1. 新建个Java Project项目,并新建将WebServiceServer中的接口文件引入到项目中
2. 新建TestWebServiceClient测试类
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.ws.CXFWebService;
public class TestWebServiceClient {
public static void main(String[] args) {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(CXFWebService.class);
factory.setAddress("http://localhost:8080/WebServiceServer/services/user");
CXFWebService client = (CXFWebService) factory.create();
System.out.println(client.getUserInfo("123"));
}
}