CXF = Celtix + XFire,继承了Celtix和XFire两大开源项目的精华,是一个开源的,全功能的,容易使用的WebService框架。文中所使用到的软件版本:Java 1.8.0_191、CXF 3.2.11。

1、准备

2、调用

2.1、Client方式

public static voidclient(String param) {try{

JaxWsDynamicClientFactory factroy=JaxWsDynamicClientFactory.newInstance();//DynamicClientFactory factroy = DynamicClientFactory.newInstance();

Client client = factroy.createClient("http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl");

Object[] results= client.invoke("toTraditionalChinese", param);

System.out.println("client方式:" + results[0]);

}catch(Exception e) {

e.printStackTrace();

}

}

该方式需要用到如下jar文件,少jar文件会报各种各样的错误。

cxf-core-3.2.11.jar、cxf-rt-bindings-soap-3.2.11.jar、cxf-rt-databinding-jaxb-3.2.11.jar、cxf-rt-frontend-jaxws-3.2.11.jar、cxf-rt-frontend-simple-3.2.11.jar、cxf-rt-transports-http-3.2.11.jar、cxf-rt-wsdl-3.2.11.jar、stax2-api-3.1.4.jar、woodstox-core-5.0.3.jar、xmlschema-core-2.2.4.jar、wsdl4j-1.6.3.jar。这些jar文件在下载的CXF包里都有。

2.2、wsdl2java方式

2.2.1、根据wsdl生成代码

执行命令:

%CXF_HOME%/bin/wsdl2java.bat -p com.inspur.ws.cxf -client http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl

-p 指定包名  -client 生成客户端调用样例

更多的参数说明详见官方文档:http://cxf.apache.org/docs/wsdl-to-java.html

2.2.1、用生成代码的调用WebService

public static voidwsdl2java(String param) {

com.inspur.ws.cxf.TraditionalSimplifiedWebService service= newcom.inspur.ws.cxf.TraditionalSimplifiedWebService();

com.inspur.ws.cxf.TraditionalSimplifiedWebServiceSoap port=service.getTraditionalSimplifiedWebServiceSoap();

String reuslt=port.toTraditionalChinese(param);

System.out.println("wsdl2java方式:" +reuslt);

com.inspur.ws.cxf.TraditionalSimplifiedWebServiceSoap port2=service.getTraditionalSimplifiedWebServiceSoap12();

reuslt=port2.toTraditionalChinese(param);

System.out.println("wsdl2java方式2:" +reuslt);

}

2.3、Simple Frontend Client Proxy方式

这种方式需要服务端是CXF用Simple Frontend发布的WebService。这里用官网的demo来演示。

2.3.1、创建服务端

a、接口

packagecom.inspur.ws.cxf.server;public interfaceHelloWorld {

String sayHi(String text);

}

b、实现类

packagecom.inspur.ws.cxf.server;public class HelloWorldImpl implementsHelloWorld {publicString sayHi(String text) {return "Hello " +text;

}

}

c、发布服务

packagecom.inspur.ws.cxf.server;importorg.apache.cxf.frontend.ServerFactoryBean;public final classServer {privateServer() {

}public static void startServer() throwsException {

HelloWorldImpl helloworldImpl= newHelloWorldImpl();

ServerFactoryBean svrFactory= newServerFactoryBean();

svrFactory.setServiceClass(HelloWorld.class);

svrFactory.setAddress("http://localhost:9000/Hello");

svrFactory.setServiceBean(helloworldImpl);

svrFactory.create();

}public static void main(String args[]) throwsException {

startServer();

System.out.println("Server ready...");

Thread.sleep(5 * 60 * 1000);

System.out.println("Server exiting");

System.exit(0);

}

}

发布服务时会用到好多jar文件,如果少jar文件会报各种奇怪的错误;可以把%CXF_HOME%/lib下的jar文件都拿过来,通过不断删除一些jar文件然后重启发布服务看有没有问题的方法来删除多余的jar文件。

2.3.2、客户端

public static voidclientProxyFactoryBean (String param) {

ClientProxyFactoryBean factory= newClientProxyFactoryBean();

factory.setServiceClass(HelloWorld.class);

factory.setAddress("http://localhost:9000/Hello");

HelloWorld serice=(HelloWorld) factory.create();

System.out.println(serice.sayHi(param));

}

2.4、调用完整代码

packagecom.inspur.ws;importorg.apache.cxf.endpoint.Client;importorg.apache.cxf.frontend.ClientProxyFactoryBean;importorg.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;importcom.inspur.ws.cxf.server.HelloWorld;/*** CXF调用WebService

**/

public classCXF {/*** Client方式

*@paramparam*/

public static voidclient(String param) {try{

JaxWsDynamicClientFactory factroy=JaxWsDynamicClientFactory.newInstance();//DynamicClientFactory factroy = DynamicClientFactory.newInstance();

Client client = factroy.createClient("http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl");

Object[] results= client.invoke("toTraditionalChinese", param);

System.out.println("client方式:" + results[0]);

}catch(Exception e) {

e.printStackTrace();

}

}/*** wsdl2java方式

*@paramparam*/

public static voidwsdl2java(String param) {

com.inspur.ws.cxf.TraditionalSimplifiedWebService service= newcom.inspur.ws.cxf.TraditionalSimplifiedWebService();

com.inspur.ws.cxf.TraditionalSimplifiedWebServiceSoap port=service.getTraditionalSimplifiedWebServiceSoap();

String reuslt=port.toTraditionalChinese(param);

System.out.println("wsdl2java方式:" +reuslt);

com.inspur.ws.cxf.TraditionalSimplifiedWebServiceSoap port2=service.getTraditionalSimplifiedWebServiceSoap12();

reuslt=port2.toTraditionalChinese(param);

System.out.println("wsdl2java方式2:" +reuslt);

}/*** Simple Frontend Client Proxy方式

*@paramparam*/

public static voidclientProxyFactoryBean (String param) {

ClientProxyFactoryBean factory= newClientProxyFactoryBean();

factory.setServiceClass(HelloWorld.class);

factory.setAddress("http://localhost:9000/Hello");

HelloWorld serice=(HelloWorld) factory.create();

System.out.println("Simple Frontend Client Proxy方式:" +serice.sayHi(param));

}public static voidmain(String[] args) {

client("小学");

wsdl2java("大学");

clientProxyFactoryBean("小学");

}

}

View Code

java cxf调用webservice_Java调用WebService方法总结(7)--CXF调用WebService相关推荐

  1. Java第四天笔记02——方法的定义及调用

    目录 1.方法的定义 2.方法的声明 3.方法名词解释 4.方法的分类 5.方法的调用 6.方法中改变形参值 7.方法的重载 1.方法的定义 方法是完成某个功能的一组语句,通常将常用的功能写成一个方法 ...

  2. Java中带返回值的方法的定义与调用

    带返回值的方法定义: public static 数据类型 方法名(参数){return 数据;} 与前文中带返回值的方法定义不同的是,void变成了数据类型,对应return后紧跟的数据.这里顺便说 ...

  3. java httpclient访问webservice_java通过HttpClient方式和HttpURLConnection方式调用WebService接口...

    1.引入maven依赖: org.apache.httpcomponents httpclient 4.5 2.请求工具类: package com.hanvon.iface.web.utils; i ...

  4. Java方法:方法解释,方法的定义及调用

    文章目录 方法 方法命名 ⭐方法的定义及调用 方法 System.out.println():调用系统类里面的标准输出对象中的方法 Java方法是语句的集合,在一起执行一个功能 方法是解决一类问题的步 ...

  5. 利用Java反射机制调用类的私有方法

    利用Java反射机制调用类的私有方法 引言 来吧·展示 参考链接 引言 如何调用其他类的私有方法呢? 可以利用Java的反射机制,去调用其他类的私有方法 来吧·展示 package cn.learn. ...

  6. java基础(4)(方法的定义格式,调用方式,使用,参数设置,方法重载等)

    什么是方法? 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集 方法的使用 需求:打印扑克牌,如下形式: 首先需要定义两个数字组,一个用来存字母和数字,一个用来存 ...

  7. Android调用JNI的实现方法

    目录 概述 调用JNI接口的方法 后记 概述 Android调用JNI库大致包括两种情况: 提供Java接口和so库: 这种类型的调用比较简单,要做的只是把so库放到APK或者Android系统中,之 ...

  8. VC++ MFC单文档应用程序SDI下调用glGenBuffersARB(1, pbo)方法编译通过但执行时出错原因分析及解决办法:glewInit()初始化的错误...

    1.问题症状 在VC++环境下,利用MFC单文档应用程序SDI下开发OpenGL程序,当调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错,出错代码如下: OpenG ...

  9. Android开发中调用系统窗口的方法

    //直接拨号 Intent callIntent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:12345678")); start ...

  10. vue父页面调用子页面及方法及传参,鼠标光标定位

    项目场景: vue父页面调用子页面及方法 问题描述 vue中父界面调用子界面及方法时界面可以调用,但是调用方法的时候第一次报错,但是关掉界面再次重新打开就没问题了 原因分析: 在我之前添加鼠标指针定位 ...

最新文章

  1. 安装hadoop下的sqoop1.99.3及配置问题全解决
  2. R语言ggridges包可视化山脊图(Ridgeline Plots)并且在山脊图中添加均值竖线(Add Mean Line to RIdgeline Plot with ggridges in R)
  3. c# 利用反射获得某个类或者对象的所有属性
  4. Paper:Xavier参数初始化之《Understanding the difficulty of training deep feedforward neural networks》的翻译与解读
  5. Scala里Unit 与 () Unit的区别
  6. 由浅到深理解ROS(2)
  7. CodeForces - 627A
  8. AI前沿线上大会,ALBERT一作、京东AI科学家等大咖亲临现场,限时免费,名额有限!...
  9. 力荐联邦学习系统,据说英伟达Clara“上架”新进展!
  10. spring boot几个初始配置文件
  11. 燃气管理 php,智能燃气管理信息系统设计
  12. python color属性_模块“cv2.cv2”没有“COLOR”属性“BGR2GREY”
  13. 情感分析技术在美团推荐系统中的探索与应用
  14. “敏捷”联袂“ALM” 上演市场模范夫妻秀
  15. [转帖]常用项目管理软件介绍
  16. 描写火车站场景_描写火车站人多的场景_描写火车站人多的作文
  17. Linux系统关闭virbr0
  18. GSM/GPRS模组硬件电源设计指南
  19. coldfusion_ColdFusion 9有什么新功能?
  20. OSPF的DR和BDR【eNSP实现】

热门文章

  1. 基于 Docker 的几种常用 CentOS7 镜像
  2. MM32F3277替换STM32
  3. Win11用户好消息 影响win11性能运行的竟是它,关闭可提升性能
  4. 打印机加粉出现的问题:打印机m7206清零
  5. 新偶像时代:被直播重构的粉丝经济和社交平台
  6. Java JSP技术详解:(一)JSP 简介
  7. vue+echar动态渲染饼图
  8. Python学习——使用ReportLab生成带表格和图文的PDF
  9. java考试系统倒计时的实现_(Java程序设计)第11章设计考试系统中的倒计时.ppt
  10. 中国推动全球4G标准制定