• WebService学习总结(六)--CXF 与Spring结合+tomcat发布


    该项目在上文   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"?>
    <beans
        xmlns="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/beans
        http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/context
        http://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中、并进行调试

  • 相关阅读:
    招聘.NET开发人员
    SQL 2005 SSIS 导入数据效率问题
    用户控件使用事件与调用页面交互
    使用sql语句删除标识列属性
    poj1520
    poj1476
    poj1363
    poj1477
    poj1312
    大端法小端法与union
  • 原文地址:https://www.cnblogs.com/maoyali/p/8871581.html
Copyright © 2020-2023  润新知