上一节中使用代理工厂JaxWsProxyFactoryBean来发布WebService, 这种方式必须指定运行的端口,如果端口被占用,就会发布失败。

cxf的WebService也可利用Tomcat来发布,并且使用8080端口。方法如下:

maven配置:

  1. <properties>
  2. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  3. <spring.version>4.3.0.RELEASE</spring.version>
  4. <cxf.version>3.0.3</cxf.version>
  5. </properties>
  6.  
  7. <dependencies>
  8. <!--Spring框架核心库 -->
  9. <dependency>
  10. <groupId>org.springframework</groupId>
  11. <artifactId>spring-context</artifactId>
  12. <version>${spring.version}</version>
  13. </dependency>
  14. <!-- Spring Web -->
  15. <dependency>
  16. <groupId>org.springframework</groupId>
  17. <artifactId>spring-web</artifactId>
  18. <version>${spring.version}</version>
  19. </dependency>
  20.  
  21. <dependency>
  22. <groupId>javax.servlet</groupId>
  23. <artifactId>javax.servlet-api</artifactId>
  24. <version>3.0.1</version>
  25. </dependency>
  26.  
  27. <!-- cxf -->
  28. <dependency>
  29. <groupId>org.apache.cxf</groupId>
  30. <artifactId>cxf-rt-frontend-jaxws</artifactId>
  31. <version>${cxf.version}</version>
  32. </dependency>
  33. <dependency>
  34. <groupId>org.apache.cxf</groupId>
  35. <artifactId>cxf-rt-transports-http</artifactId>
  36. <version>${cxf.version}</version>
  37. </dependency>
  38. <dependency>
  39. <groupId>org.apache.cxf</groupId>
  40. <artifactId>cxf-rt-frontend-jaxrs</artifactId>
  41. <version>${cxf.version}</version>
  42. </dependency>
  43. <!-- 客户端调用restFul服务需要导入的包 -->
  44. <dependency>
  45. <groupId>org.apache.cxf</groupId>
  46. <artifactId>cxf-rt-rs-client</artifactId>
  47. <version>${cxf.version}</version>
  48. </dependency>

---

在web.xml中加入以下配置(spring监听器和cxf的servlet):

  1. <listener>
  2. <description>SpringListener</description>
  3. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  4. </listener>
  5. <context-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>classpath*:applicationContext.xml</param-value>
  8. </context-param>
  9. <!--cxf的Servlet-->
  10. <servlet>
  11. <servlet-name>CXFServlet</servlet-name>
  12. <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  13. </servlet>
  14. <servlet-mapping>
  15. <servlet-name>CXFServlet</servlet-name>
  16. <url-pattern>/ws/*</url-pattern>
  17. </servlet-mapping>

---

接口:

  1. @WebService
  2. public interface HelloService{
  3.  
  4. public String helloCxf();
  5.  
  6. public String hello(String name);
  7.  
  8. public User getUser(int id);
  9.  
  10. public void saveUser(User user);
  11. }

实现类:

  1. @WebService(serviceName = "helloService",
  2. endpointInterface = "cn.lg.ws.hellocxf.HelloService"
  3. )
  4. public class HelloServiceImpl implements HelloService{
  5.  
  6. @Override
  7. public String helloCxf(){
  8. return "Hello CXF!";
  9. }
  10.  
  11. @Override
  12. public String hello(String name)
  13. {
  14. return "Hello " + name;
  15. }
  16.  
  17. @Override
  18. public User getUser(int id) {
  19. User user = new User();
  20. user.setId(id);
  21. user.setName("lg");
  22. user.setEmail("QQ");
  23. user.setAddress("hahaha");
  24. return user;
  25. }
  26.  
  27. @Override
  28. public void saveUser(User user) {
  29. System.out.println(user.toString());
  30. }
  31.  
  32. }

cxf-bean.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:jaxws="http://cxf.apache.org/jaxws"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
  7. http://cxf.apache.org/jaxws
  8. http://cxf.apache.org/schemas/jaxws.xsd">
  9.  
  10. <bean id="helloServiceBean" class="cn.lg.ws.hellocxf.HelloServiceImpl" />
  11.  
  12. <jaxws:server id="helloServicej" serviceClass="cn.lg.ws.hellocxf.HelloService"
  13. address="/hello">
  14. <jaxws:serviceBean>
  15. <ref bean="helloServiceBean" />
  16. </jaxws:serviceBean>
  17. </jaxws:server>
  18. </beans>

该文件需添加到spring配置文件中:   <import resource="cxf-bean.xml" />

浏览器访问 http://localhost:8080/webapp/cxf ,若出现以下界面则表示发布成功:

使用Spring和Tomcat发布CXF SOAP WebService的更多相关文章

  1. 使用Spring和Tomcat发布CXF REST WebService

    与发布SOAP WS一样, 同样需要在web.xml文件中配置CXFServlet: <!--cxf的Servlet--> <servlet> <servlet-name ...

  2. Webservice实践(七)CXF 与Spring结合+tomcat发布

    上一节介绍了如何使用CXF 来发布服务,但是没有介绍使用web 容器来发布,很多项目需要用tomcat 这样的容器来发布.另外本节将介绍CXF 与spring 结合的方法. 一 目标: 1.利用spi ...

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

    该项目在上文   WebService学习总结(四)--基于CXF的服务端开发  的基础上修改为spring上发布的webservice接口 1.新建web project 工程 2.导入spring ...

  4. Spring Boot SOAP Webservice例子

    前言 本文将学习如何利用Spring boot快速创建SOAP webservice服务: 虽然目前REST和微服务越来越流行,但是SOAP在某些情况下,仍然有它的用武之地: 在本篇 spring b ...

  5. WebService—CXF整合Spring实现接口发布和调用过程

    一.CXF整合Spring实现接口发布 发布过程如下: 1.引入jar包(基于maven管理) <!-- cxf --> <dependency> <groupId> ...

  6. Spring整合CXF,发布RSETful 风格WebService(转)

    Spring整合CXF,发布RSETful 风格WebService 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的.关于发布CXF WebServer和Sp ...

  7. Spring整合CXF,发布RSETful 风格WebService

    原文地址:http://www.cnblogs.com/hoojo/archive/2012/07/23/2605219.html 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有 ...

  8. cxf soap rest webservice spring

    1. 导入 jar 包 2. 编写接口 3. 编写实现 4. 配置spring 配置文件 5. 配置web.xml servlet 6. 访问 package com.diancai.test; im ...

  9. Spring整合CXF发布及调用WebService

    这几天终于把webService搞定,下面给大家分享一下发布webService和调用webService的方法 添加jar包 (官方下载地址:http://cxf.apache.org/downlo ...

随机推荐

  1. hdu 5777 domino 贪心

    domino Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Problem ...

  2. scala学习手记2 - scala中的循环

    先来看一段Java中的循环: for (int i = 1; i < 4; i++) { System.out.print(i + ","); } 毫无疑问,scala可以让 ...

  3. Mysql 索引复习笔记

    之前学习索引后由于一直没怎么用,所以也只是粗略看了一下,最近发现索引的用处很大,并且也很多知识点,在此做复习记录. 什么是索引? 百度百科是这样描述的: 索引是为来加速对表中数据行中的检索而创建的一种 ...

  4. 在oracle中插入数据报错:ORA-00984列在此处不允许

    这里报错的原因就是当数据类型varchar2时没有使用单引号. 没写单引号,不管是双引号还是什么都没写都会报这个错误.

  5. javascript异步编程的几种方法

    目前工作中用的比较多的异步模式编程有如下几种方法 一 回调函数 这是异步编程最基本的方法,假设有两个函数f1和f2,后者等待前者的执行结果 f1(); f2(); 如果f1是一个很耗时的任务,可以考虑 ...

  6. SpannableString实现TextView的链接效果

    SpannableString实现TextView的链接效果 一.简介 TextView使用SpannableString设置复合文本TextView通常用来显示普通文本,但是有时候需要对其中某些文本 ...

  7. linux上安装mysql以后root不能登录的解决办法

    今天心血来潮在linux上装了mysql,装完以后用命令mysql -uroot -p登录时提示 解决办法: 使用ps aux|grep mysql 查出pid 使用kill pid结束mysql进程 ...

  8. Sunday算法--C#版

    public static int Sunday(string text, string pattern) { int i, j, m, k; i = j = 0; int tl, pl; int p ...

  9. oracle内存分析

    oracle时间内存=SGA+PGA SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个服务进程.后台进程专有:每 ...

  10. 【lightoj-1026】Critical Links(桥)

    题意: 给出无向图,求桥的模板题. #include <bits/stdc++.h> using namespace std; ; int dfn[N], low[N];//时间戳;low ...