当前位置: 首页 > news >正文

使用Apache CXF创建简单Web Service

1.创建HelloWorld 接口类

package com.googlecode.garbagecan.cxfstudy.helloworld; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; @WebService public interface HelloWorld { public @WebResult(name="String")String sayHi(@WebParam(name="text") String text); }

2.创建HelloWorld实现类

package com.googlecode.garbagecan.cxfstudy.helloworld; public class HelloWorldImpl implements HelloWorld { public String sayHi(String name) { String msg = "Hello " + name + "!"; System.out.println("Server: " + msg); return msg; } }

3.创建Server端测试类

package com.googlecode.garbagecan.cxfstudy.helloworld; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; // http://localhost:9000/HelloWorld?wsdl public class Server { public static void main(String[] args) throws Exception { HelloWorld helloWorld = new HelloWorldImpl(); JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); factory.setServiceClass(HelloWorld.class); factory.setAddress("http://localhost:9000/HelloWorld"); factory.setServiceBean(helloWorld); factory.create(); System.out.println("Server start..."); Thread.sleep(60 * 1000); System.out.println("Server exit..."); System.exit(0); } }

4.创建Client端测试类

package com.googlecode.garbagecan.cxfstudy.helloworld; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; public class Client { public static void main(String[] args) { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass(HelloWorld.class); factory.setAddress("http://localhost:9000/HelloWorld"); HelloWorld helloworld = (HelloWorld) factory.create(); System.out.println(helloworld.sayHi("kongxx")); System.exit(0); } }

5.测试

首先运行Server类来启动Web Service服务,然后访问http://localhost:9000/HelloWorld?wsdl地址来确定web service启动正确。
运行Client测试类,会在命令行输出Hello kongxx!的message。

 

 

 

相关文章:

  • java中Keytool的使用总结 (加密 密钥(key)和证书(certificates))
  • 又到母亲节
  • Java学习的好群,极力推荐!
  • linux svn 客户端基本使用命令
  • 发行盗版windows的组织为何热衷于更改系统设置
  • 2017年PHP程序员未来路在何方
  • xml操作工具类
  • xml报文理解 -----转-----
  • HP-UX 11i v2上Oracle10.2基本安装指南
  • Chrome审查元素【Network】Preserve log
  • 【STM32 .Net MF开发板学习-01】Hello world
  • 千万级PV规模高性能高并发网站架构
  • 用Linux防火墙构建软路由
  • C#中Validating和Validated事件
  • CentOS7关闭防火墙
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 03Go 类型总结
  • Apache Zeppelin在Apache Trafodion上的可视化
  • canvas 五子棋游戏
  • Date型的使用
  • Elasticsearch 参考指南(升级前重新索引)
  • es6(二):字符串的扩展
  • ES6简单总结(搭配简单的讲解和小案例)
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • HTML5新特性总结
  • Invalidate和postInvalidate的区别
  • JAVA_NIO系列——Channel和Buffer详解
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Wamp集成环境 添加PHP的新版本
  • 给github项目添加CI badge
  • 关于字符编码你应该知道的事情
  • 你真的知道 == 和 equals 的区别吗?
  • 实战|智能家居行业移动应用性能分析
  • 赢得Docker挑战最佳实践
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • # Panda3d 碰撞检测系统介绍
  • # 数论-逆元
  • $L^p$ 调和函数恒为零
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (k8s中)docker netty OOM问题记录
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (zhuan) 一些RL的文献(及笔记)
  • (ZT)出版业改革:该死的死,该生的生
  • (分类)KNN算法- 参数调优
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (五)IO流之ByteArrayInput/OutputStream
  • (一)kafka实战——kafka源码编译启动
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • ***监测系统的构建(chkrootkit )
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)