• Spring 整合CXF 实现WebService(JAX-WS)


    服务端
    创建项目

    添加依赖

     web.xml 配置CXFServlet

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns="http://java.sun.com/xml/ns/javaee"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
             version="2.5">
      <display-name>Archetype Created Web Application</display-name>
      <!--1. cxfsevlet配置-->
      <servlet>
        <servlet-name>cxfservlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>cxfservlet</servlet-name>
        <url-pattern>/ws/*</url-pattern>
      </servlet-mapping>
      <!--2.spring容器配置-->
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
      </context-param>
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
    
      <!-- 欢迎页面配置 -->
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    pom.xml

      <groupId>org.example</groupId>
        <artifactId>spring-webservice</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>war</packaging>
    
        <dependencies>
            <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws -->
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-transports-http</artifactId>
                <version>3.1.4</version>
            </dependency>
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-frontend-jaxws</artifactId>
                <version>3.1.4</version>
            </dependency>
    
    
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.2.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>4.2.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>4.2.4.RELEASE</version>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.2</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                        <showWarnings>true</showWarnings>
                    </configuration>
                </plugin>
                <!-- 运行tomcat7方法:tomcat7:run -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!-- 指定端口 -->
                        <port>8080</port>
                        <!-- 请求路径 -->
                        <path>/</path>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    
    </project>

    import javax.jws.WebService;
    
    /**
     * 对外发布服务的接口
     */
    @WebService
    public interface HelloService {
        /**
         * 对外发布服务的接口的方法
         */
        public String sayHello(String name);
    }
    import webservice.HelloService;
    
    public class HelloServiceImpl implements HelloService {
        @Override
        public String sayHello(String name) {
            return name + ",Welcome to Itheima!";
        }
    }
    <?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:cxf="http://cxf.apache.org/core"
           xmlns:jaxws="http://cxf.apache.org/jaxws"
           xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://cxf.apache.org/core
            http://cxf.apache.org/schemas/core.xsd
            http://cxf.apache.org/jaxws
            http://cxf.apache.org/schemas/jaxws.xsd">
    
            <!--
                Spring整合cxf发布服务,关键点:
                1. 服务地址
                2. 服务类
                服务完整访问地址:
                    http://localhost:8080/ws/hello
            -->
        <jaxws:server address="/hello">
            <jaxws:serviceBean>
                <bean class="webservice.impl.HelloServiceImpl"></bean>
            </jaxws:serviceBean>
        </jaxws:server>
    
    
    </beans>

    启动服务

     客户端

    <?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"
           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">
    
            <!--
                Spring整合cxf客户端配置:
                1. 服务地址     http://localhost:8080/ws/hello
                2. 服务接口类型
    
            -->
        <jaxws:client
                id="helloService"
                serviceClass="webservice.impl.HelloService"
                address="http://localhost:8080/ws/hello"></jaxws:client>
    
    
    </beans>
    /**
     * 对外发布服务的接口
     */
    @WebService(targetNamespace = "http://webservice/")
    public interface HelloService {
        /**
         * 对外发布服务的接口的方法
         */
        public String sayHello(String name);
    }

     测试类

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext.xml")
    public class Client {
    
        // 注入对象
        @Resource
        private HelloService helloService;
    
        @Test
        public void remote(){
            // 查看接口的代理对象类型
            // class com.sun.proxy.$Proxy45
            System.out.println(helloService.getClass());
    
            // 远程访问服务端方法
            System.out.println(helloService.sayHello("Jerry"));
        }
    }

    测试结果:

  • 相关阅读:
    SSAS没有注册类别 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)) 解决办法
    Javascript中暂停功能的实现
    【转】JQuery ajax json 实例
    SqlDataAdapter有关InsertCommand,UpdateCommand,DeleteCommand 实例
    绑定数组对象DataTable.Select返回值DataRow[]
    SQL SERVER 联想函数重写
    JQuery Dialog(转)
    温习C 文件操作
    轻松掌握Windows窗体间的数据交互
    反射方法调用时的一个错误:参数计数不匹配( parameter count mismatch )
  • 原文地址:https://www.cnblogs.com/dalianpai/p/12292784.html
Copyright © 2020-2023  润新知