该项目在上文 WebService学习总结(四)--基于CXF的服务端开发 的基础上修改为spring上发布的webservice接口
1、新建web project 工程
2、导入spring和cxf的有关jar包
3、 在src 目录下,配置sping 的配置文件
4、在src 目录,新建一个sping的配置文件applicationContext-server.xml 名字可以根据自己习惯修改,内容如下
<?xml version="1.0" encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:jaxws="http://cxf.apache.org/jaxws"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.1.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"><!-- 配置自动扫描的包 --><!-- <context:component-scan base-package="com.service.springmvc"></context:component-scan><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"></property><property name="suffix" value=".jsp"></property></bean><bean class="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter"><property name="baseAddress" value="http://localhost:8085/"/></bean>--><!-- 此次在这里配置,可以设置配置文件<import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />--><bean id="studentWsImpl" class="com.myl.service.serviceImpl.StudentWsImpl"></bean><jaxws:server id="studentWsSpring" serviceClass="com.myl.service.StudentWs" address="/StudentSpringWs"><jaxws:serviceBean><ref bean="studentWsImpl"></ref></jaxws:serviceBean></jaxws:server></beans>
这里xml 配置文件里面, bean id 指定了web service 接口实现类,也就是调用接口后实际业务逻辑的实现类; server id 和address 是 web service接口暴露的地址,对应的是接口类 StudentWs, 而这个服务的serviceBean 指定为接口实现类,这样就指定了运行时调用的实现类。 这个配置也就是sping核心的ioc控制反转功能,通过配置文件将依赖的对象,用配置文件来实现依赖注入,从而实现控制反转。
5、修改web.xml 文件
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"><display-name>SpringCXF</display-name><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><servlet><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></init-param></servlet><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>/service/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>springDispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping> </web-app>
context-param里面指定了spring 配置文件
6、发布到tomcat里面
7、 运行tomcat,如下图所示在表示运行成功
8、查看发布的服务
通过下面url ,来查看发布的服务:http://localhost:8080/SpringCXF/service/ 这里StudyWsSpringCXF是工程项目的名称,如果一切正常,打开的界面如下:
9、可以点击红框中内容获取wsdl 文档。
10、通过客户端验证
运行之前的客户端,验证一下发布的服务端能正常工作,需要注意的是,需要修改客户端类StudentWsClient.java里面调用服务端的地址,与当前发布的服务端一致
jwpfb.setAddress("http://localhost:8080/SpringCXF/service/StudentSpringWs");
package com.client;import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import com.webservice.StudentWs;/*** * @author myl* @date 2018年4月18日 上午2:44:26* 客户端调用服务端发布的接口*/ public class StudentSerivceTest {public static void main(String[] args) {//获取工厂对象JaxWsProxyFactoryBean jwpfb = new JaxWsProxyFactoryBean(); //加载生成的StudentWsImpl类jwpfb.setServiceClass(StudentWs.class);//传入url接口地址jwpfb.setAddress("http://localhost:8080/SpringCXF/service/StudentSpringWs"); //创建接口对象StudentWs ws = (StudentWs) jwpfb.create();//调用接口中的方法ws.addStudentService("mao", "11", "22");ws.addStudentService("ya", "15", "23");ws.queryStudentService("mao");ws.queryStudentService("ya");}}
运行客户端输出结果:
总结
通过sping+tomcat+cxf 发布webservice 服务的步骤如下:
1、建立工程、编写web service 服务端相应的代码,实现业务逻辑
2、编写sping的配置文件 applicationContext.xml 文件,这个文件放在src 的根目录下
3、编写配置web.xml 文件
4、发布到tomcat中、并进行调试