zoukankan      html  css  js  c++  java
  • springmvc集成cxf的方法

    最近需要在项目中增加webservice接口,供三方调用,下面就把集成的方法展示如下,供大家参考:

    第一步:服务端的发布;

    1:配置web.xml文件,添加cxf的servlet

        <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>/webService/*</url-pattern>
        </servlet-mapping>

    2:maven导入需要的cxf jar包

    <properties>
      <cxf.version>3.2.1</cxf.version>
    </properties>
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-frontend-jaxws</artifactId>
      <version>${cxf.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-transports-http</artifactId>
      <version>${cxf.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-core</artifactId>
      <version>${cxf.version}</version>
    </dependency>

    如果不是maven项目,一般的项目的话,就下载相应的jar包并导入项目中。

    3.导入wsdljar包

    <dependency>
       <groupId>soap.public</groupId>
       <artifactId>wsdl4j</artifactId>
       <version>1.6.3</version>
       <scope>system</scope>
       <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/wsdl4j-1.6.3.jar</systemPath>
    </dependency>

    wsdl4j-1.6.3.jar 包放在了工程的lib目录下,然后引用了本地lib中的此jar包,此处也可以直接从maven仓库中引用。

    4,在增加如下的配置文件,我的命名为cxf-servlet.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- START SNIPPET: beans -->
    <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:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
        http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd">
    
    
        <!-- 引入CXF配置文件,低版本还需引入其他两个文件 -->
        <import resource="classpath:META-INF/cxf/cxf.xml" /> 
        
        <jaxws:endpoint id="ssWebService" address="/ssWebService"
            implementor="com.webservice.service.impl.SsWebServiceImpl" />
    </beans>

    然后在spring配置文件中,导入cxf-servlet.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
        xmlns:cache="http://www.springframework.org/schema/cache"
        xmlns:jaxws="http://cxf.apache.org/jaxws"
        xmlns:soap="http://cxf.apache.org/bindings/soap"
        xsi:schemaLocation="
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/jdbc
        http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
        http://www.springframework.org/schema/cache
        http://www.springframework.org/schema/cache/spring-cache.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util.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">
    
        <context:component-scan base-package="com.webservice.*"/>
        
        <!-- 事务管理器 -->
         <bean id="transactionManager" 
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <!--         数据源 -->
            <property name="dataSource" ref="dataSource" />
        </bean> 
        <!-- 通知 -->
         <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
    <!--             传播行为 -->
                <tx:method name="import*" propagation="REQUIRED" />
                <tx:method name="insert*" propagation="REQUIRED" />
                <tx:method name="delete*" propagation="REQUIRED" />
                <tx:method name="update*" propagation="REQUIRED" />
                <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
                <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
            </tx:attributes>
        </tx:advice> 
        <!-- 切面 -->
         <aop:config>
             <aop:pointcut id="operation" expression="execution(* com.webservice.*.service.*.*(..))" />
                <aop:advisor advice-ref="txAdvice" pointcut-ref="operation" />
            <aop:advisor advice-ref="txAdvice"
                pointcut="execution(* com.webservice.*.service*.*.*(..))" />
        </aop:config>
        
        
        
        <import resource="classpath:config/cxf-servlet.xml"/> 
         
    </beans>

    最后建立webservice服务端的代码

    接口类和实现类代码

    package com.webservice.service;
    
    import javax.jws.WebParam;
    import javax.jws.WebService;
    import javax.jws.soap.SOAPBinding;
    import javax.jws.soap.SOAPBinding.Style;
    
    import com.webservice.data.pojo.ExcelUser;
    
    @WebService
    @SOAPBinding(style = Style.RPC)
    public interface SsWebService {
        
        public ExcelUser getUser(@WebParam(name="loginName") String loginName,@WebParam(name="password") String password);
        
        
        
    }
    package com.webservice.service.impl;
    
    import javax.jws.WebService;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.webservice.data.pojo.ExcelUser;
    import com.webservice.data.service.LoginService;
    import com.webservice.service.SsWebService;
    
    @Transactional
    @Service
    @WebService(endpointInterface = "com.webservice.service.SsWebService", serviceName = "SsWebService")
    public class SsWebServiceImpl implements SsWebService {
        
        @Autowired
        private LoginService loginService;
    
        @Override
        public ExcelUser getUser(String loginName, String password) {
            
            return loginService.findUserByNameAndPwd(loginName, password);
        }
    
        
    
    }

    到此服务端已建立完成,访问地址:http://127.0.0.1:8080/工程名/webService/ssWebService?wsdl即可看到发布的webService接口内容。

  • 相关阅读:
    linux分析工具之vmstat详解
    linux分析工具之top命令详解
    hadoop之yarn详解(命令篇)
    hadoop之yarn详解(基础架构篇)
    linux分析利刃之sar命令详解
    hadoop之mapreduce详解(优化篇)
    linux之find命令详解
    一个毫无用处的公众号封面生成器
    一个简单的计时器对比各种可迭代对象定义方式的速度区别
    python中的迭代器和生成器
  • 原文地址:https://www.cnblogs.com/zhangliang88/p/11959396.html
Copyright © 2011-2022 走看看