2种实现CXF方法例子

转载自:http://www.blogjava.net/sai5201314vicky/articles/353078.html

大家好,今天我要介绍的现实webservice的一种技术——CXF

由于本人是一个菜鸟,所以下面所做的都是一些简单的小例子!希望能帮到有需要的同学!好了,废话就不多说了,直接进入正题!

开发环境:myeclipse8.5 + tomcat6.0 + jdk1.6

CXF版本:apache-cxf-2.3.5.zip(在这里介绍一个下载包的网址给大家:http://www.jar114.com

把apache-cxf-2.3.5.zip解压出来后,如下图所示目录:(不做解析了)

下面所作的小例子都用到lib文件夹下面的包(不介意的话就全部加进项目里)!

新建一web项目,名称叫HelloWorldCXF

建一包:com.cxf.dao,在该包下新建一接口,命名为:HelloWorld,代码如下:

package com.cxf.dao;

import javax.jws.WebService;

@WebService

public interface HelloWorld {

public String sayHello(String username);

}

建一包:com.cxf.service,在该包下新建一个类,命名为:HelloWorldImpl,代码如下:

package com.cxf.service;

import javax.jws.WebService;

import com.cxf.dao.HelloWorld;

@WebService

public class HelloWorldImpl implements HelloWorld {

public String sayHello(String username) {

System.out.println("say hello is called!");

return "Hello" + username;

}

}

新建一测试包:com.cxf.action,在该包下建一个类,类名为:HelloTest,代码如下:

package com.cxf.action;

import org.apache.cxf.endpoint.Server;

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

import com.cxf.service.HelloWorldImpl;

public class HelloTest {

public static void main(String[] args) {

JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();

// Web服务的地址

factoryBean.setAddress("http://localhost:8081/hello");

// Web服务对象调用接口

factoryBean.setServiceClass(HelloWorldImpl.class);

Server server = factoryBean.create();

server.start();

}

}

执行代码后,在浏览器打开:http://localhost:8081/hello?wsdl 能如下显示的,证明服务器已经发布成功!

新建一web项目,名称叫HelloWorldCXFClient

新建一个包,这个包的名称和服务器包的名称一样的:com.cxf.dao,里面的接口和方法也必须和服务器的一样:

package com.cxf.dao;

import javax.jws.WebService;

@WebService

public interface Hello {

//这里的接口方法必须跟服务器接口里面的方法一致

public String sayHello(String username);

}

新建一个测试类:代码如下

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import com.cxf.dao.Hello;

public class ClientTest {

public static void main(String []trgs){

JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();

//获取服务器端

factoryBean.setAddress("http://localhost:8081/hello");

//通过客户端的接口获取服务器端的接口

factoryBean.setServiceClass(Hello.class);

Hello hello =(Hello) factoryBean.create();

System.out.println(hello.sayHello("和谐dota"));

}

}

执行代码,控制台能打印出:Hello和谐dota!

到这,一个完整的CXF小例子就完成了!

不知道大家有没有注意到,上面的接口和现实类都存在有一个标签:@WebService

这个标签的作用是:指明接口是Web 服务

当然你也可以不用这个方式去实现,直接用手动的去进行指明也是可以的!!下面就是用手动这种方式现实功能的,希望大家能找出这2个方法的不同之处!

新建一web项目,名称叫HelloWorldCXF

建一包:com.cxf.dao,在该包下新建一接口,命名为:HelloWorld,代码如下:

package com.cxf.dao;

import javax.jws.WebService;

public interface HelloWorld {

public String sayHello(String username);

}

建一包:com.cxf.service,在该包下新建一个类,命名为:HelloWorldImpl,代码如下:

package com.cxf.service;

import javax.jws.WebService;

import com.cxf.dao.HelloWorld;

public class HelloWorldImpl implements HelloWorld {

public String sayHello(String username) {

System.out.println("say hello is called!");

return "Hello" + username;

}

}

新建一测试包:com.cxf.action,在该包下建一个类,类名为:HelloTest,代码如下:

package com.cxf.action;

import org.apache.cxf.endpoint.Server;

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

import com.cxf.service.HelloWorldImpl;

public class HelloTest {

public static void main(String[] args) {

//发布服务器

ServerFactoryBean factoryBean = new ServerFactoryBean();

// 获取Web服务的地址

factoryBean.setAddress("http://localhost:8080/hello");

// Web服务对象调用接口

factoryBean.setServiceClass(Hello.class);

// Web服务对象调用实现接口类

HelloImpl hello = new HelloImpl();

factoryBean.setServiceBean(hello);

// 发布web服务器

factoryBean.create();

}

}

执行代码后,在浏览器打开:http://localhost:8081/hello?wsdl 能如下显示的,证明服务器已经发布成功!

新建一web项目,名称叫HelloWorldCXFClient

新建一个包,这个包的名称和服务器包的名称一样的:com.cxf.dao,里面的接口和方法也必须和服务器的一样:

package com.cxf.dao;

import javax.jws.WebService;

public interface Hello {

//这里的接口方法必须跟服务器接口里面的方法一致

public String sayHello(String username);

}

新建一个测试类:代码如下

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import com.cxf.dao.Hello;

public class ClientTest {

public static void main(String []trgs){

//客户端对象

ClientProxyFactoryBean factoryBean = new ClientProxyFactoryBean();

//获取服务器端

factoryBean.setAddress("http://localhost:8080/hello");

//通过客户端的接口获取服务器端的接口

factoryBean.setServiceClass(Hello.class);

Hello hello ;

hello =(Hello) factoryBean.create();

System.out.println(hello.sayHello("和谐dota"));

}

}

执行代码,控制台能打印出:Hello和谐dota!

到这,就完成了现实CXF的2种不同方法!!接下来和大家一起完成CXF整合Spring的小例子!

时间: 2024-08-28 01:55:56

2种实现CXF方法例子的相关文章

《转》微商48种加人方法

第一种就是同行互推,我跟我同行如果互推的话商,假如他是卖另一个品牌的化妆品,比如海洋之水,他在他的朋友圈里推我的水素面膜,我在我的朋友圈里推他的海洋之水,我发完海洋之水这条广告后,发现我的朋友圈里有几个人要买,我就问跟我互推的同行了,他说90 我感觉贵,我有问了我朋友圈里又一个有海洋之水的,他说70 那我宁愿找70的,也不找90元对不?所以互推的这种方法,只适合你是有固定品牌的,而且是价格统一的,去哪里买这款产品都是这个价格,这样不管是代理的客户还是零售的客户都比较稳定,不会存在客户流失这样的问

24种设计模式--模版方法模式【Template Method Pattern】

周三,9:00,我刚刚坐到位置,打开电脑准备开始干活.“小三,小三,叫一下其它同事,到会议室,开会”老大跑过来吼,带着淫笑.还不等大家坐稳,老大就开讲了,“告诉大家一个好消息,昨天终于把牛叉模型公司的口子打开了,要我们做悍马模型,虽然是第一个车辆模型,但是我们有能力,有信心做好,我们一定要…(中间省略 20 分钟的讲话,如果你听过领导人的讲话,这个你应该能够续上)”动员工作做完了,那就开始压任务了,“这次时间是非常紧张的,只有一个星期的时间,小三,你负责在一个星期的时间把这批 10 万车模(注:

pyqt 动态显示时间方法例子学习

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' import sys,datetime from PyQt4.QtCore import Qt from PyQt4 import QtGui,QtCore,Qt from ti import Ui_Form class Example(QtGui.QDialog,Ui_Form): def __init__(self,parnet=None): super(Exa

Scrapy里Selectors 四种基础的方法

在Scrapy里面,Selectors 有四种基础的方法xpath():返回一系列的selectors,每一个select表示一个xpath参数表达式选择的节点css():返回一系列的selectors,每一个select表示一个css参数表达式选择的节点extract():返回一个unicode字符串,为选中的数据re():返回一串一个unicode字符串,为使用正则表达式抓取出来的内容 /html/head/title: 选择HTML文档<head>元素下面的<title> 标

三种纯CSS方法实现等高列

在这篇文章里, 我会介绍三种使用纯css的方式来实现等高列的方法.在网页布局中设置列等高是比较常见的, 所以写这篇文章就是要总结下一些优雅的纯CSS解决方案. 插图自己弄得,不喜莫喷 哈哈.. 下面介绍的三种方法都只用到了CSS , 不涉及jQuery.JavaScript计算实现的方法,所以我把它这篇文章标题设为:三种纯CSS方法实现等高列. 方法-1: 使用Margins, Paddings和 Overflow来实现 第一种方法使用margins, paddings和overflow来迫使列

std::sort 学习:一种递归分治方法

// std::sort 学习:一种递归分治方法 今天看了看 stl 的 std::sort 的代码,众所周知,这个函数是在快速排序递归太深的时候使用堆排序防止过度退化,但是今天说的不是这个.我们只看快速排序的部分. 我们一般实现快速排序大概是这样的(本王随意写了个用下标当参数的排序函数,领会意思即可). void quick_sort(int first, int last) // 某个数组的 [first, last) {  if ((last - first) > 1) {  int mi

Jmeter 的两种脚本录制方法

Jmeter 的两种脚本录制方法有一.通过badboy工具录制:二.通过Jmeter代理录制 一.通过badboy工具录制 1).工具下载地址:www.badboy.com.au/ 2).下载安装完成后,打开工具(工具默认开启录制),在地址栏输入被测项目的地址,点击右侧箭头即可录制 3).录制完成后,点击结束按钮,选择File--Export Jmeter ,最后的文件格式为.jmx类型 4).打开Jmeter工具,选择文件--打开,选择上一步保存的文件,文件即可成功导入进Jmeter 5).练

Redis 第二种安装部署方法

Redis 第二种安装部署方法

Java中的五种单例模式实现方法

[代码] Java中的五种单例模式实现方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 package s