项目采用cxf3.0.13为项目添加webService服务接口,
项目框架采用spring4,springmvc,mybatis。jdk1.8。
用maven管理项目。
tomcat服务器。
本文只介绍了如果在项目中引入cxf框架,暴露webService接口,不涉及项目框架的其他整合,是在其它已经整合成功,项目可以正常访问的情况下,进行的操作。
1、首先在pom.xml中引入cxf框架的依赖
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.0.13</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.0.13</version>
</dependency>
2、创建接口和接口的实现类
接口类加上注解@WebService,比如:
@WebService
public interface HisLisWsService {
public List<String> getPatientInfoByMedicalCard(String medicalCard);
}
实现类上也要加上@WebService注解,这里很多其它人介绍说方法上要加上注解@WebMethod,我测试是可以不用加的,可能是cxf版本的问题,比如:
@WebService
public class HisLisWsServiceImpl implements HisLisWsService {
@Override
public List<String> getPatientInfoByMedicalCard(String medicalCard) {
List<String> list = new ArrayList<>();
list.add("张三");
list.add("女");
list.add("45");
list.add(medicalCard);
return list;
}
}
3、在spring配置文件中配置需要暴露的接口
在spring的配置文件,如applicationContext.xml中添加如下代码。
其中implementor是上面写的接口的实现类。address是访问路径。
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<!-- 要暴露给外部调用的接口,address:请求路径 -->
<jaxws:endpoint implementor="cn.com.his.webservice.impl.HisLisWsServiceImpl"
address="/hisLisInterface"></jaxws:endpoint>
在applicationContext.xml的文件头中还要添加:
xmlns:jaxws="http://cxf.apache.org/jaxws"
并且在xsi:schemaLocation中添加:
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd
4、在web.xml中添加CXFServlet
注意这里的url-pattern为/services/*,也就是我们项目发布后,webService的接口访问地址就为
http://ip地址:端口号/项目名称/services/hisLisInterface?wsdl
<servlet>
<servlet-name>CXFService</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXFService</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
5、启动项目,访问
例如我的访问地址为:http://localhost:8080/his_portal/services/hisLisInterface?wsdl
其中?wsdl是访问webservice服务的固定后缀。
访问会得到xml格式的wsdl文档,说明发布成功。