博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Eclipse+Maven+Spring+CXF 构建webservice 服务
阅读量:5307 次
发布时间:2019-06-14

本文共 3849 字,大约阅读时间需要 12 分钟。

一、 软件准备

  • Eclipse 4.2.1
  • Maven 2.2.1
  • Spring 3.2.6
  • CXF 3.0.2

二、 步骤

首先,在Eclipse中用maven构建一个quickstart版本的maven项目,并且在pom文件中添加4个依赖,分别是:cxf-rt- frontend-jaxws、cxf-rt-databinding-aegis、cxf-rt-transports-http、cxf-rt- transports-http-jetty,在本次测试时用的版本都是2.5.2,以下为本次项目的pom.xml文件中的cxf依赖部分:

org.apache.cxf
cxf-rt-frontend-jaxws
2.5.2
org.apache.cxf
cxf-rt-databinding-aegis
2.5.2
org.apache.cxf
cxf-rt-transports-http
2.5.2
org.apache.cxf
cxf-rt-transports-http-jetty
2.5.2

1.        新建web工程,利用maven管理,如下:

  

工程名为test,完成以后,项目结构如下图:

src/main/java 准备放 java 程序;

src/main/resources准备放各类资源文件。

2.  添加代码

1) 定义服务接口

[java]
package com.test;       import javax.jws.WebService;      @WebService      public interface HelloWorld {          public String sayHello();      }

因为只是一个webservice的实验程序,所以非常简单,只有一个服务方法: sayHello(),利用 @WebService注解来声明这是一个webservice的接口。

2)  实现服务类

package com.test; import javax.jws.WebService; @WebServicepublic class HelloWorldImpl implements HelloWorld{       public String sayHello(){        return "Hello world!";    }}

完成java代码添加后的项目结构如下:

 

3. 添加Spring-CXF 配置

在项目 src/main/webapp/WEB-INF 目录下新建XML定义:cxf-servlet.xml如下:

该定义文件利用spring和CXF的功能,发布一个ID为helloWorld,实现类为com.test.HelloWorldImpl,发布 相对路径为 /HelloWorld(对应绝对目录为: http://host:port/{WebAPPName}/HelloWorld)的 webservice。

 因为我们需要用到CXF来做webservice,右键点击项目中的POM.XML,添加apache-cxf依赖,如下图:

 

4. Web应用配置

修改 src/main/webapp/WEB-INF 目录下的web.xml文件

cxf
Apache CXF Endpoint
cxf
cxf
org.apache.cxf.transport.servlet.CXFServlet
1
cxf
/*
60

该文件实际上是定义了处理webservice的CXF Servlet的映射关系。

 完成步骤3和4以后的工程目录如下:

5.        编译打包

利用maven(package -X)编译打包成test.war

(在Eclipse上右击工程名 Run as -> Maven build)

6.        将步骤5生成的test.war部署到tomcat服务器上

7.        访问测试:

在浏览器上输入:http://localhost:8080/test/,出现如下画面就成功了:

点击WSDL链接:

 

8. 编写webservice client端代码

1)        首先通过 Spring 与 CXF 的配置来定义 Web Service 的客户端 Bean,在 src\main\resources 目录下创建client-beans.xml 配置文件:

需要注意的是,该配置文件中的 address需要写成发布服务的绝对路径。

2)        编写客户端java代码: HelloWorldClient.java

package com.test; import org.springframework.context.support.ClassPathXmlApplicationContext; public final class HelloWorldClient {     private HelloWorldClient() {    }     public static void main(String args[]) throws Exception {        // START SNIPPET: client        ClassPathXmlApplicationContext context            = new ClassPathXmlApplicationContext(new String[] {"client-beans.xml"});         HelloWorld client = (HelloWorld)context.getBean("client");         String response = client.sayHello();        System.out.println("Response: " + response);        System.exit(0);        // END SNIPPET: client    }}

注意,代码中HelloWorldclient = (HelloWorld)context.getBean("client"); 的client需要与"client-beans.xml"中的 bean id一致才能找到这个服务。 

现在的项目结构如下:

3)        连接测试

在eclipse中直接按HelloWorldClient运行 Run as -> Java Application: 

 输出的Hello world! 即是我们发布的HelloWorld的方法 sayHello()的输出!这说明从服务发布到客户端连接都成功了。

转载于:https://www.cnblogs.com/longshiyVip/p/4970817.html

你可能感兴趣的文章
JS 去字符串空格 总结
查看>>
Win7和Ubuntu下mysql 安装配置
查看>>
HDOJ 3899 JLUCPC
查看>>
软件需求分析--结构化分析(SA)方法
查看>>
SpringBoot Aop打印参数
查看>>
react 事件绑定
查看>>
基本的文件输入输出操作Tips
查看>>
十 字符串处理
查看>>
贪吃蛇
查看>>
数组的冒泡排序及拷贝
查看>>
python-mysql基本用法
查看>>
托管DLL和非托管DLL的区别
查看>>
02-django查询
查看>>
<raspberry pi> raspberry pi 设置wlan 静态ip
查看>>
Django之分页
查看>>
转载 IE的documentMode属性
查看>>
Qt对象树
查看>>
NoSQL一些基础
查看>>
SQLSERVER复制数据库某一个表到另一个数据库中(可跨服务器)
查看>>
织梦CMS建站入门学习(二)
查看>>