这个例子需要建三个Maven项目,其中一个为父项目,另外两个为子项目

首先,建立父项目testParent,选择quickstart:

输入项目名称和模块名称,然后创建:

然后建立子项目testInterface:

再建立子项目projectImpl,过程跟上面以上,只是类型要选webapp(到时候启动工程或者打包都是以这个项目为主的):

建好之后,在testParent的pom.xml里面写入下面内容,主要是加入了cxf,junit,logback,springframework的依赖,在父项目加入依赖,子项目就不需要再加入依赖了:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>testParent</groupId><artifactId>testParent</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><name>testParent</name><url>http://maven.apache.org</url><build><finalName>testParent</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-compiler-plugin</artifactId>  <version>3.2</version>  <configuration>  <source>1.7</source>  <target>1.7</target>  <encoding>UTF-8</encoding>  </configuration></plugin></plugins></build><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><org.springframework.version>3.2.8.RELEASE</org.springframework.version><cxf.version>2.7.7</cxf.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-api</artifactId><version>${cxf.version}</version><type>jar</type><scope>compile</scope></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-rs-security-cors</artifactId><version>${cxf.version}</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-ws-policy</artifactId><version>${cxf.version}</version><type>jar</type></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-core</artifactId><version>${cxf.version}</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxrs</artifactId><version>${cxf.version}</version></dependency><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-rs-extension-providers</artifactId><version>${cxf.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><type>jar</type><scope>provided</scope></dependency><dependency> <groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>4.7</version><exclusions><exclusion><artifactId>logback-classic</artifactId><groupId>ch.qos.logback</groupId></exclusion><exclusion><artifactId>logback-core</artifactId><groupId>ch.qos.logback</groupId></exclusion><exclusion><artifactId>jackson-databind</artifactId><groupId>com.fasterxml.jackson.core</groupId></exclusion></exclusions></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${org.springframework.version}</version><scope>runtime</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${org.springframework.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>3.2.8.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${org.springframework.version}</version></dependency></dependencies><modules><module>testInterface</module><module>projectImpl</module></modules>
</project>

然后在testInterface的src/main/java下面新建类

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;@Path("/a")
public interface TestIn1 {@GET@Path("/doGet/{first}/{last}")@Produces(MediaType.APPLICATION_XML)public String doGet(@PathParam(value="first") String firstName,@PathParam(value="last") String lastName);@POST@Path("/itemComfirm")@Produces(MediaType.APPLICATION_XML)public String itemComfirm(String xmlParam,@Context HttpServletRequest req,@Context HttpServletResponse res);
}

然后在projectImpl的pom.xml修改,这里加入对testInterface子项目的依赖:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>testParent</groupId><artifactId>testParent</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>projectImpl</artifactId><packaging>war</packaging><dependencies><dependency><groupId>testParent</groupId><artifactId>testInterface</artifactId><version>122</version><type>jar</type><scope>compile</scope></dependency></dependencies>
</project>

然后在projectImpl的src/main/java下面新建类,并且实现testInterface子项目中的TestIn1接口:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class TestIn1Impl implements TestIn1 {public String doGet(String firstName, String lastName) {return "hihihihi"+","+firstName+","+lastName;}public String itemComfirm(String xmlParam, HttpServletRequest req, HttpServletResponse res) {return "hahahaha"+","+xmlParam;}}

再然后在下图路径修改application.xml和web.xml,没有文件的话就自己新建:

application.xml:

jaxrs:extensionMappings和jaxrs:languageMappings表示可根据URL后缀不同来进行不同的配置,例如/testURL.xml,那么该请求的请求头就会设置为application/xml,为/testURL.en,则会用en-gb来解析请求内容。详情可参考:http://cxf.apache.org/docs/jax-rs.html

<?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"  xmlns:jaxrs="http://cxf.apache.org/jaxrs"  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://cxf.apache.org/jaxrs  http://cxf.apache.org/schemas/jaxrs.xsd">  <bean id="TestIn1Impl" class="TestIn1Impl"/>  <jaxrs:server id="TestIn1ImplServiceContainer">  <jaxrs:serviceBeans>  <ref bean="TestIn1Impl" />  </jaxrs:serviceBeans>  <jaxrs:extensionMappings>  <entry key="xml" value="application/xml" />  </jaxrs:extensionMappings>  <jaxrs:languageMappings>  <entry key="en" value="en-gb"/>    </jaxrs:languageMappings>  </jaxrs:server>  </beans> 

web.xml:

<?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"  id="WebApp_ID" version="2.5">  <display-name>fsp-api</display-name>  <context-param>  <param-name>contextConfigLocation</param-name>  <param-value>classpath*:application.xml</param-value>  </context-param>  <!-- spring context listener -->  <listener>  <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  </listener>  <listener>  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>  <!-- CXF -->  <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>/testParent/*</url-pattern>  </servlet-mapping>  </web-app>

然后再写一个测试类:

import javax.ws.rs.core.MediaType;import org.apache.cxf.jaxrs.client.WebClient;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;public class TestClient1 {private WebClient client;private String url="http://localhost:8080/testParent/testParent/a";@Beforepublic void setUp() throws Exception{System.out.println("setupbegan");client=WebClient.create(url).header("charset", "UTF-8").encoding("UTF-8").acceptEncoding("UTF-8");}@Afterpublic void tearDown() throws Exception{System.out.println("tearDownbegan");client=null;}@Testpublic void testItemConfirm(){System.out.println("began");String xmlaaParam="<a>ddd</a>";String responseMsg=client.path("itemComfirm").accept(MediaType.APPLICATION_XML).post(xmlaaParam,String.class);System.out.println("response :"+responseMsg);System.out.println("end");}@Testpublic void testDoGet() {  System.out.println("began");String responseString = client.path("doGet/"+"dsdsd"+"/"+"uyuy"+"")  .accept(MediaType.APPLICATION_XML)  .get(String.class);  System.out.println("response :"+responseString);System.out.println("end");}}

最后,在Eclipse的sever插件中加入ProjetImpl项目,然后启动项目:

启动成功之后,执行测试类,控制台输出:

setupbegan
began
response :hihihihi,dsdsd,uyuy
end
tearDownbegan
setupbegan
began
response :hahahaha,<a>ddd</a>
end
tearDownbegan

如有错误,欢迎指出。

转载请注明出处:http://www.cnblogs.com/Starshot/p/6889751.html

转载于:https://www.cnblogs.com/Starshot/p/6889751.html

Maven+Spring+CXF+Tomcat7 简单例子实现webservice相关推荐

  1. #Spring代理的简单例子#

    Spring AOP详解(转载) 一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地 ...

  2. Eclipse+Maven+Spring+CXF 构建webservice 服务

    一.   软件准备 Eclipse 4.2.1 Maven 2.2.1 Spring 3.2.6 CXF 3.0.2 软件下载和Eclipse 安装 maven插件等请參考其它文章. 二.   步骤 ...

  3. activeMQ,spring的jmstemplate简单例子

    1.使用的是maven的结构,导入activeMQ的包 [html] view plain copy <dependency> <groupId>org.apache.acti ...

  4. spring异常处理实例(登录例子)

    给出一个spring异常处理的简单例子:  spring配置文件Config.xml <?xml version="1.0" encoding="UTF-8&quo ...

  5. spring+cxf 开发webService(主要是记录遇到spring bean注入不进来的解决方法)

    这里不介绍原理,只是记录自己spring+cxf的开发过程和遇到的问题 场景:第三方公司需要调用我们的业务系统,以xml报文的形式传递数据,之后我们解析报文存储到我们数据库生成业务单据: WebSer ...

  6. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方 1.form的enctype="multipart/form-data" 这个是上传文件必须的 2.appl ...

  7. webService 使用CXF 实现简单的helloworld

    webSerive 操口方法: package com.wlzx.cxf.demo; import javax.jws.WebService; @WebService public interface ...

  8. Cxf + Spring3.0 入门开发WebService

    转自原文地址:http://sunny.blog.51cto.com/182601/625540/ 由于公司业务需求, 需要使用WebService技术对外提供服务,以前没有做过类似的项目,在网上搜寻 ...

  9. 在Maven+Spring项目中使用Node.js的Gulp进行前端自动化构建

    摘要: 在Maven+Spring项目中使用Node.js的Gulp进行前端自动化构建 刚开始打算进行前后端分离开发,后来发现在使用JSP或者Freemarker做动态页面时,想发挥这些自动化构建工具 ...

最新文章

  1. Tomcat 启动错误 org/eclipse/jdt/debug/core/JDIDebug...
  2. 在运行期通过反射了解JVM内部机制
  3. fetch vue读取json文件_前端笔记——尝试理解并在JavaScript中使用Fetch()
  4. eclipse开发java程序,断点调试
  5. SAP Spartacus ConfigModule.withConfig的处理逻辑
  6. javascript学习之void(0)的作用
  7. Scala:First Steps in Scala
  8. Java 多线程-生产者、消费者
  9. jQueryEasyUI框架 - panel 选项卡高度自适应
  10. 机器学习从入门到进阶✅
  11. 《Advanced .NET Debugging》 读书笔记 Listing 5-6: Pining的简单示例
  12. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_22-页面静态化-静态化测试-静态化程序测试...
  13. win10 C语言qt调试,如何在Windows中调试Qt(MSVC)应用程序
  14. UML建模与软件工程
  15. 在Linux下安装软件
  16. zktime 协议_zktime5.0考勤管理系统使用说明书(1.0版).pdf
  17. PS 动图修改背景坑
  18. 计算机粘贴不起作用,教您复制粘贴不能用怎么解决
  19. 在线制作banner php,分享HTML5制作Banner的实例
  20. el-element使用本地自定义图标

热门文章

  1. md5会重复吗_自媒体平台视频重复审查机制,如何避免自己做的视频和别人的重复...
  2. 安卓编程用什么软件_震惊!安卓IOS都可以用的牛逼软件
  3. mysql 8安装_mysql安装过程详解
  4. java对象类型有哪些_Java中常用的对象数据类型有哪些?它们分别又占多少个字节呢?...
  5. typescript获取数据库数据_肿瘤药敏多组学数据库(GDSC)的数据介绍和获取
  6. 编译原理题练习题测试题
  7. Error during artifact deployment. See server log for details解决办法
  8. 实战|对某棋牌站的一次getshell
  9. SRC漏洞挖掘之偏门资产收集篇
  10. centos7启动与切换图形界面