WebService CXF学习
WebService CXF学习(入门篇1):CXF由来
WebService介绍
WebService让一个程序可以透明地调用互联网程序,不用管具体的实现细节。只要WebService公开了服务接口,远程客户端就可以调用服务。WebService是基于http协议的组件服务,WebService是分散式应用程序的发展趋势。
WebService的开源实现
WebService更多是一种标准,而不是一种具体的技术。不同的平台,不同的语言大都提供WebService的开发实现。在JAVA领域,WebService的框架很多,例如:AXIS,XFire,CXF等。AXIS,XFire相对比较成熟,资料相对较多。在这里我们只对CXF进行讲解,其他大家想学习到互联网找相关资料学习。
CXF框架由来
ApacheCXF项目是由ObjectWeb Celtix和CodeHaus XFire合并成立。ObjectWeb Celtix是由IONA公司赞助,于2005年成立的开源Java ESB产品,XFire则是业界知名的SOAP堆栈。合并后的ApacheCXF融合该两个开源项目的功能精华,提供了实现SOA所需要的核心ESB功能框架,包括SOA服务创建,服务路由,及一系列企业级QoS功能。
ApacheCXF架框的目标 1.概述 <>高性能 <>可扩展 <>直观易用 2.支持标准
<> JAX-WS, JSR-181, SAAJ, JAX-RS
<> SOAP 1.1, 1.2, WS-I BasicProfile, WS-Security, WS-Addressing, WS-RM, WS-Policy <> WSDL 1.1 <> MTOM
3.传输方式,绑定,数据绑定,传送数据格式 <> 绑定: SOAP, REST/HTTP
<> 数据绑定: JAXB 2.x, Aegis, XMLBeans, SDO <> 传送数据格式: XML, JSON, FastInfoset <> 传输方式: HTTP, Servlet, JMS 4.部署灵活
<> 轻量级: 可以将服务部署到 Tomcat或其支持Spring的容器中
<> JBI整合: 部署一个服务引擎到JBI容器,例如: ServiceMix, OpenESB or Petals
<> J2EE集成: 可以将服务部署到J2EE应用服务器上,例如:Geronimo, JOnAS, JBoss, WebLogic, 及WebSphere
<> Java 客户端/服务端可以独立性 5.支持多种编程语言
<> 完全支持 JAX-WS 2.x 客户端/服务端模式
<> JAX-WS 2.x synchronous, asynchronous and one-way API's <> JAX-WS 2.x Dynamic Invocation Interface (DII) API <> 支持 wrapped and non-wrapped 数据格式 <> XML messaging API
<> 支持JavaScript 和 ECMAScript 4 XML (E4X) <> 支持CORBA
<> 支持JBI及ServiceMix 6.可编程环境 <> Java to WSDL <> WSDL to Java <> XSD to WSDL <> WSDL to XML <> WSDL to SOAP <> WSDL to service
WebService CXF学习(入门篇2):HelloWorld 理论联系实际,单单只讲理论那就成了纸上谈兵,用一个HelloWorld Demo可来说明事更加直观。那下面咱们就开始进行讲解:
首先到apache官方网下载apache-cxf-2.2.2,地址:http://cxf.apache.org/ 新建一个Java Project,导入cxf常用.jar包 Java代码
1. commons-logging-1.1.1.jar
2. geronimo-activation_1.1_spec-1.0.2.jar (or Sun's Activation jar) 3. geronimo-annotation_1.0_spec-1.1.1.jar (JSR 250)
4. geronimo-javamail_1.4_spec-1.6.jar (or Sun's JavaMail jar) 5. geronimo-servlet_2.5_spec-1.2.jar (or Sun's Servlet jar) 6. geronimo-ws-metadata_2.0_spec-1.1.2.jar (JSR 181)
7. geronimo-jaxws_2.1_spec-1.0.jar (or Sun's jaxws-api-2.1.jar) 8. geronimo-stax-api_1.0_spec-1.0.1.jar (or other stax-api jar) 9. jaxb-api-2.1.jar 10. jaxb-impl-2.1.12.jar 11. jetty-6.1.21.jar 12. jetty-util-6.1.21.jar 13. neethi-2.0.4.jar 14. saaj-api-1.3.jar 15. saaj-impl-1.3.2.jar 16. wsdl4j-1.6.2.jar 17. wstx-asl-3.2.8.jar 18. XmlSchema-1.4.5.jar 19. xml-resolver-1.2.jar 20. cxf-2.2.2.jar
接下就是HelloWorld Demo开发了 第一步:新建一个webservice接口 Java代码
1. @WebService
2. public interface IHelloWorld {
3. //@WebParam给参数命名,提高可代码可读性。此项可选 4. blic String sayHi(@WebParam(name=\5. }
通过注解@WebService申明为webservice接口 第二步,实现WebService接口 Java代码
1. @WebService
2. public class HelloWorldImpl implements IHelloWorld { 3.
4. public String sayHi(String name) {
5. System.out.println(\6. return \7. } 8. 9. }
第三步,创建服务端 Java代码
1. public class Server { 2.
3. private Server(){
4. IHelloWorld helloWorld = new HelloWorldImpl(); 5. //创建WebService服务工厂
6. JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); 7. //注册WebService接口
8. factory.setServiceClass(IHelloWorld.class); 9. //发布接口
10. factory.setAddress(\11. factory.setServiceBean(helloWorld); 12. //创建WebService 13. factory.create(); 14. }; 15.
16. public static void main(String[] args) throws InterruptedException{ 17. //启动服务端
18. new Server();
19. System.out.println(\20. //休眠一分钟,便于测试
21. Thread.sleep(1000*60); 22. System.out.println(\
23. System.exit(0); 24. } 25. }
第四步,创建客户端 Java代码
1. public class Client { 2.
3. private Client(){}; 4.
5. public static void main(String[] args){ 6. //创建WebService客户端代理工厂
7. JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); 8. //注册WebService接口
9. factory.setServiceClass(HelloWorld.class); 10. //设置WebService地址
11. factory.setAddress(\12. IHelloWorld iHelloWorld = (IHelloWorld)factory.create(); 13. System.out.println(\
14. System.out.println(\15. Josen\16. System.exit(0); 17. } 18. } 19.
最后是万事俱备,只欠测试了 首先,运行服务端程序
其次,打开浏览器,在地址栏中输入http://localhost:9000/HelloWorld?wsdl(因为cxf自带了一个jetty服务器),查看接口是否发布成功,如里浏览器页面显示下面内容,证明接口发布成功 Java代码
1. com/\2. 3. etNamespace=\4.
相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




