Apache CXF JAX-WS example
1. 环境说明
jdk 1.6.0_29
apache cxf 2.7.7
2. 新建JavaProject
3. 添加jar包,将apache cxf下面lib里面的jar包都添加到项目中(可能有些是不需要的,为了简单没进行筛选)。
4. 项目目录结构:
5. 代码如下
Book.Java
- package com.unei.bean;
- import javax.xml.bind.annotation.XmlRootElement;
- @XmlRootElement(name = "Book")
- public class Book {
- private int bookId;
- private String bookISBNnumber;
- private String bookName;
- private double price;
- private String author;
- public double getPrice() {
- return price;
- }
- public void setPrice(double price) {
- this.price = price;
- }
- public int getBookId() {
- return bookId;
- }
- public void setBookId(int bookId) {
- this.bookId = bookId;
- }
- public String getBookISBNnumber() {
- return bookISBNnumber;
- }
- public void setBookISBNnumber(String bookISBNnumber) {
- this.bookISBNnumber = bookISBNnumber;
- }
- public String getBookName() {
- return bookName;
- }
- public void setBookName(String bookName) {
- this.bookName = bookName;
- }
- public String getAuthor() {
- return author;
- }
- public void setAuthor(String author) {
- this.author = author;
- }
- }
IBookService.java
- package com.unei.service;
- import javax.jws.WebMethod;
- import javax.jws.WebService;
- import com.unei.bean.Book;
- @WebService
- public interface IBookService {
- @WebMethod
- public void addBook(Book book);
- @WebMethod
- public void deleteBook(int bookId);
- @WebMethod
- public void updateBook(Book book);
- @WebMethod
- public Book getBook(int bookId);
- }
BookService.java
- package com.unei.service.impl;
- import com.unei.bean.Book;
- import com.unei.service.IBookService;
- public class BookService implements IBookService{
- @Override
- public void addBook(Book book) {
- System.out.println("addBook:"+book.getBookName());
- }
- @Override
- public void deleteBook(int bookId) {
- System.out.println("deleteBook:"+bookId);
- }
- @Override
- public void updateBook(Book book) {
- System.out.println("updateBook:"+book.getBookName());
- }
- @Override
- public Book getBook(int bookId) {
- Book book=new Book();
- book.setBookId(4);
- book.setBookName("getBook");
- book.setBookISBNnumber("ABCDEFG");
- book.setPrice(20.00);
- return book;
- }
- }
Server.java
- package com.unei.service.test;
- import org.apache.cxf.interceptor.LoggingInInterceptor;
- import org.apache.cxf.interceptor.LoggingOutInterceptor;
- import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
- import com.unei.service.IBookService;
- import com.unei.service.impl.BookService;
- public class Server {
- protected Server() throws Exception {
- <span style="white-space:pre"> </span>System.out.println("Starting server...");
- <span style="white-space:pre"> </span>BookService bs=new BookService();
- <span style="white-space:pre"> </span>JaxWsServerFactoryBean svrFactory=new JaxWsServerFactoryBean();
- <span style="white-space:pre"> </span>svrFactory.setServiceClass(IBookService.class);
- <span style="white-space:pre"> </span>svrFactory.setAddress("http://localhost:9000/bs");
- <span style="white-space:pre"> </span>svrFactory.setServiceBean(bs);
- <span style="white-space:pre"> </span>svrFactory.getInInterceptors().add(new LoggingInInterceptor());
- <span style="white-space:pre"> </span>svrFactory.getOutInterceptors().add(new LoggingOutInterceptor());
- <span style="white-space:pre"> </span>svrFactory.create();
- }
- public static void main(String args[]) throws Exception {
- new Server();
- System.out.println("Server ready...");
- Thread.sleep(5 * 6000 * 1000);
- System.out.println("Server exiting");
- System.exit(0);
- }
- }
6. 测试程序
浏览器输入:http://localhost:9000/bs?wsdl
浏览器输出wsdl文档
7. 通过apache cxf生成客户端代码
在命令提示符中运行:
wsdl2java -frontend jaxws21 -p com.unei.soap.client -d F:\ws http://localhost:9000/bs?wsdl
将wsdl装换为java代码
8. 新建Java Project,添加jar包,将cxf生成的客户端代码添加到项目中,项目如下:
9. 客户端代码
Client.java
- package com.unei.app;
- import org.apache.cxf.interceptor.LoggingInInterceptor;
- import org.apache.cxf.interceptor.LoggingOutInterceptor;
- import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
- import com.unei.soap.client.Book;
- import com.unei.soap.client.IBookService;
- public class Client {
- public static void main(String[] args) {
- JaxWsProxyFactoryBean factory=new JaxWsProxyFactoryBean();
- factory.getInInterceptors().add(new LoggingInInterceptor());
- factory.getOutInterceptors().add(new LoggingOutInterceptor());
- factory.setAddress("http://localhost:9000/bs");
- factory.setServiceClass(IBookService.class);
- Object o=factory.create();
- IBookService bs=(IBookService)o;
- Book b=new Book();
- b.setBookName("new book");
- b.setBookId(1);
- bs.addBook(b);
- }
- }
Apache CXF JAX-WS example的更多相关文章
- Spring 4 集成Apache CXF开发JAX-RS Web Service
什么是JAX-RS 在JSR-311规范中定义,即Java API for RESTful Web Services,一套Java API,用于开发 RESTful风格的Webservice. 工程概 ...
- Apache CXF实现WebService发布和调用
第一种方法:不用导入cxf jars 服务端: 1. 新建Web工程 2.新建接口和实现类.测试类 目录结构图如下: 接口代码: package com.cxf.spring.service; imp ...
- Apache CXF实现WebService入门教程(附完整源码)
Apache CXF实现WebService非常简单实用,只需要几步就可以实现一个简单的web service. 首先我们需要新建一个maven项目,在pom中添加依赖和jetty作为测试的web s ...
- Apache CXF自定义拦截器
为什么设计拦截器?1.为了在webservice请求过程中,能动态操作请求和响应数据,CXF设计了拦截器 拦截器分类: 1.按所处的位置分:服务器端拦截器,客户端拦截器. 2.按消息的方向分:入拦截器 ...
- So easy Webservice 8.spring整合CXF 发布WS
1.添加jar包(cxf的jar包中包含了spring的jar包),添加spring配置文件 2.web.xml中配置CXFServlet,过滤WS服务的地址 <!-- 配置CXFServlet ...
- Apache CXF 103 CXF Basics - partial
本Spike记录中内容,如无特别指出,均引用[1]. 0 引言 0.1 基本的Web服务术语 XML 业界的结构化交换信息表示的事实上的标准. XML namespace是在XML文档中提供唯一的命名 ...
- Apache CXF 102 CXF with REST
前言 续上篇Apache CXF 101,摘抄部分REST概念性知识,以运行实例考察CXF对REST的支持. 目录 1 REST简介 2 工具 3 运行实例 内容 本Spike记录中内容,如无特别指出 ...
- Apache CXF 101 Win Eclipse开发环境搭建
前言 博客草稿中“SOA生态系统初探”一文一直没有进展,感觉要将SOA.Web Service(WS).REST等概念阐述清楚还需要一些酝酿. 顶天须得立地,这里记录一些“下里巴人”的实践,主要考察A ...
- Apache CXF实现Web Service(5)—— GZIP使用
Apache CXF实现Web Service(5)-- GZIP使用 参考来源: CXF WebService整合Spring Apache CXF实现Web Service(1)--不借助重量级W ...
- Apache CXF实现Web Service(4)——Tomcat容器和Spring实现JAX-RS(RESTful) web service
准备 我们仍然使用 Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service 中的代码作为基础,并 ...
随机推荐
- vue-cli之webpack的proxyTable无效的解决方案
最近遇到这个需要单页访问跨域后台的问题 可以按照如下设置: proxyTable: { '/list': { target: 'http://api.xxxxxxxx.com', pathRewrit ...
- C++ code:剩余串排列
方法一: 一种直观的解是,先对第一个字串排序,然后逐个字符在第二个字串中搜索,把搜索不到的字符输出,就是所要的结果. 然而,算法库中有一个集合差运算set_difference,而且要求两个集合容器是 ...
- spoj227 树状数组插队序列问题
插队问题和线段树解决的方式一样,每个结点维护值的信息是该节点之前的空位有多少,然后从后往前插点即可 注意该题要求输出的是从左往右输出每个士兵的等级,即问士兵最后排在第几个位置 /* 树状数组维护前i个 ...
- 性能测试十七:liunx下jmeter结果报表、html报表
控制台日志,只能看出整体的数据,若只是测单接口,这个最好用,但若有多个接口时,无法分别展示,所以需要换另外一种报表 四种方式来获取Jmeter的结果报表 一.在GUI模式下跑Jmeter的脚本,用tp ...
- 性能测试十三:linux常用命令
常用的linux命令: 目录类/ 根目录. 当前目录.. 上级目录cd / 进入根目录cd .. 进入上级目录ls 查看当前目录下的所有文件ll 查看当前目录下所有文件的详细信息pwd 显示当前目录的 ...
- Windows安装使用Openssl
1.什么是openssl? 2.下载安装 三方下载地址 备用64位和32位下载地址 选择32位或者64位合适的版本下载,例如Win64OpenSSL_Light-1_0_2h.exe: 设置环境变量, ...
- JavaScriptDom操作与高级应用(八)
一:Dom操作基础与高级应用 Node接口也定义了一些所有节点类型都包含的属性和方法.
- wmiprvse.exe cpu占用高怎么解决
可以通过在注册表中设置,来禁用该服务,具体步骤如下: (1)按下“Win+R”组合键呼出运行,在框中输入“CMD”按下回车打开“命令提示符”: (2)在命令提示符中输入:r ...
- java利用Jsch实现在windows平台远程操作linux服务器
说明:exec用于执行命令:sftp用于文件处理 package com.wyg.simple; import java.io.BufferedReader; import java.io.File; ...
- PDA智能程序访问WebService,报告“未能建立与网络的连接”
其实就是你没又连接上网络.首先下个第三方软件关于vs模拟器连接的.然后根据以下说明操作就可以连接了在确保主机已连上互联网的情况下,按以下步骤设置: 1.打开ActiveSync ,点击“文件”——&g ...