一、cxf发布webservice接口

添加maven依赖

<dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-core</artifactId><version>3.4.3</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>3.4.3</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http-jetty</artifactId><version>3.4.3</version></dependency>

这里的cxf-rt-transports-http-jetty依赖是内置jetty容器发布webservice接口

创建服务端接口

@WebService
public interface UserService {String getUserInfo(String name);
}
@WebService
public class UserServiceImpl implements UserService {@Overridepublic String getUserInfo(String name) {return "我是" + name;}
}
public class test {public static void main(String[] args) {System.out.println("web service start");UserService implementor = new UserServiceImpl();String address = "http://127.0.0.1:8082/userService";JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();factoryBean.setAddress(address); // 设置暴露地址factoryBean.setServiceClass(UserService.class); // 接口类factoryBean.setServiceBean(implementor); // 设置实现类factoryBean.create();System.out.println("web service started");System.out.println("web service started");}}

启动main方法,正常情况会发布成功

浏览器访问http://127.0.0.1:8082/userService?wsdl 返回下面内容说明发布成功

二、客户端进行动态调用webservice接口

 public static void main(String[] args) throws Exception {JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();Client client = dcf.createClient("http://127.0.0.1:8082/userService?wsdl");// namespace是命名空间,methodName是方法名QName name = new QName("http://service.test.example.com/", "getUserInfo");Object[] objects = client.invoke(name, "我没收到反馈");System.out.println(objects[0].toString());}

正常情况调用接口会返回成功

cxf的动态调用不适合传递自定义对象,需要传递自定义对象,需要使用静态调用生成本地代码

三、cxf静态调用生成本地代码

采用apache-cxf-3.4.3版本,jar包可到官网下载 http://cxf.apache.org/download.html

使用JAX-WS Proxy代理工厂方式开发客户端,首先需要使用wsdl2java工具生成web service在本地的代理接口

1、配置环境变量

wsdl2java.bat在CXF根目录\bin目录下,使用之前需要配置CXF环境变量,CXF_HOME变量值为CXF根目录,并在path中添加%CXF_HOME%\bin,如:


2、wsdl2java生成代理接口
配置好环境变量后,打开CMD命令行窗口,将当前目录切换到java工程src目录下,命令行输入如下格式命令,回车,即可根据wsdl生成服务端的代理接口。

wsdl2java -p ws.cxf -client http://127.0.0.1:8082/userService?wsdl

命令说明:

-p 指定代理接口所在包名,-client(生成客户端) 后面的字符串声明了服务接口的wsdl

public static void test() {JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();factory.setServiceClass(UserService.class);factory.setAddress("http://127.0.0.1:8082/userService");Object object = factory.create();UserService service = (UserService) object;UserVO userVO = new UserVO();userVO.setName("李师傅打开");String userInfo = service.getUserInfo(userVO);System.out.println(userInfo);}

3、第二种调用方法

 ExecuteBindQSService executeBindQSService = new ExecuteBindQSService(ExecuteBindQSService.getWsdlLocation(WSDL_URL));ExecutePtt executePtt = executeBindQSService.getExecuteBindQSPort();//获取代理,并设置日志拦截器,打印日志Client client = ClientProxy.getClient(executePtt);client.getInInterceptors().add(new LoggingInInterceptor());client.getOutInterceptors().add(new LoggingOutInterceptor());// 超时时间设置HTTPConduit http = (HTTPConduit) clientProxy.getConduit();HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();httpClientPolicy.setConnectionTimeout(Integer.valueOf(webServiceConTimeout));httpClientPolicy.setReceiveTimeout(Integer.valueOf(webServiceRevTimeout));httpClientPolicy.setAllowChunking(false);http.setClient(httpClientPolicy);//调用方法执行Response response = executePtt.execute(request);

4、关闭元素校验

@EndpointProperty(key = “soap.no.validate.parts”, value = “true”)

四、使用的是apache的axis实现的

第二种访问webservice的方法是通过idea生成客户端代码,访问服务端接口向访问本地接口一样。使用的是apache的axis实现的。

使用cxf发布webservice接口,以及调用webservice接口相关推荐

  1. android调用web接口,Android调用webservice 接口

    以查询手机号码归属地的Web service为例,它的wsdl为 1 在Android项目中导入??Ksoap2-android jar第三方jar包?? 2 Activity代码 public cl ...

  2. WebService工具类调用远程接口服务时java.io.IOException: Server returned HTTP response code: 500 for URL XXX

    问题描述:在本地测试时,使用个人封装的Webservice代码工具类调用远程接口服务时,一切正常.但是一旦将该代码放到一个已有项目的中使用时,就会出现如下所示的错误提示 java.io.IOExcep ...

  3. android调用web接口,Android调用WebService系列之请求调用

    好久没写博客,快有3年了.当初想在CTO把自己的技术文章一直延续,可却没有坚持! 开发Android网络App,通讯方式决定了你App所需的能力! 最近正在用Web Service进行通讯,那么就让我 ...

  4. HttpURLConnection调用webservice,HTTP调用webservice,简单的webservice调用

    以前调用webservice一般使用axis.axis2先生成java类后,直接引用,多方便.但是有的webservice接口非常的函数,生成的java类非常多,有没有一种非常简化的方法. axis2 ...

  5. php如何调用mysql接口_php5 调用api接口

    XXL-HEX v1.2.0,面向对象的 WebAPI 框架 版本1.2.0新特性 1.Client端,新增Javascript版本实现:前端JS可使用提供的Client,直接调用XXL-HEX的加密 ...

  6. Go 学习笔记(35)— Go 接口 interface (接口声明、接口初始化、接口方法调用、接口运算、类型断言、类型查询、空接口)

    1. 接口概念 接口是双方约定的一种合作协议.接口实现者不需要关心接口会被怎样使用,调用者也不需要关心接口的实现细节.接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式.类型及结构. 接口内部存 ...

  7. jni 调用java接口_JNI 调用 JAVA 接口

    JNI 调用 JAVA 接口 介绍 JNI 是本地语言编程接口.它允许运行在JVM中的Java代码和用C.C++或汇编写的本地代码相互操作. 由于一些加密等情况的需要,需要在 so 层获取一些信息用于 ...

  8. java调用restful接口_Java调用RESTful接口的几种方式

    前端一般通过Ajax来调用,后端调用的方式还是挺多的,比如HttpURLConnection,HttpClient,Spring的RestTemplate 服务端代码如下: 服务端接口请求的URL:h ...

  9. java调c的接口_Java调用C接口的简单示例

    Java调用C接口的简单示例 正好需要用到Java调用dll里的C接口,想到自己做个简单的例子.我们可能需要自己生成dll文件,下边介绍一下,详细的步骤.主要参考https://blog.csdn.n ...

  10. cmd 调用webservice接口_C++ 调用 Webservice gSoap 方法

    大体思路是:使用gsoap生成文件,把生成的相关文件均加载到项目中调用 本文以调用天气的webservice为例子,手把手教你. 步骤一 准备gSOAP工具:将gsoap_2.8.100.zip解压, ...

最新文章

  1. tensorflow中的tf.summary.image
  2. python概述_Python-概述
  3. Node爬取简书首页文章
  4. linux time
  5. 交叉渡线道岔规格_交叉渡线铁路道岔的型号及选用
  6. 为什么技术人一定要懂点“可信计算”?
  7. python里的装饰器
  8. 腾讯上线视频社交App:让你与陌生人美颜视频通话聊天
  9. win10如何提高电脑画质_win10电脑怎么提高画质 | 手游网游页游攻略大全
  10. gradle mysql依赖关系,如何在gradle中找到\删除未使用的依赖关系
  11. Redis开发与运维之第八章理解内存(四)
  12. Ubuntu——笔记本插入耳机没有声音的解决方案
  13. 创业指南:如何快速拿到天使投资?
  14. Unraid配置阿里云加速镜像安装荒野无灯qBittorrent镜像
  15. Java GridBagLayout(网格包布局管理器)
  16. 模拟cmos集成电路(7)
  17. 树莓派php minicom,用DHT11实践树莓派与Arduino串口通信 | 树莓派实验室
  18. 我的世界服务器娘怎么修改配置,转【教学】Pixelmon配置文件修改指南
  19. win10任务栏透明_电脑任务栏美化amp;状态监测软件,在任务栏实时显示网速/CPU/内存/温度等信息...
  20. 【Python】这篇文章能让你明白经验模态分解(EMD)——EMD在python中的实现方法

热门文章

  1. highlight-current-row
  2. 异步电机与同步电机的发电机状态与电动机状态理解
  3. 单位四元数多姿态插值(squad)
  4. GraalVM Native Image
  5. java将数据写入指定excel模板
  6. Java宇layUi结合xm-select 实现复选框查询功能
  7. 总结二十:程序员激励的基本因素
  8. 在线制作webp格式的图片
  9. 关于富顺豆花及其经营的调查报告
  10. python进行数据预测的实例-第一个使用Python完成的数据化运营案例――销售预测...