加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService CXF学习:HelloWorld

发布时间:2020-12-16 23:07:26 所属栏目:安全 来源:网络整理
导读:http://blog.csdn.net/bj_xiufeng/article/details/6825234 理论联系实际,单单只讲理论那就成了纸上谈兵,用一个HelloWorld Demo可来说明事更加直观。那下面咱们就开始进行讲解:? ?? 首先到apache官方网下载apache-cxf-2.2.2,地址:http://cxf.apache.org/

http://blog.csdn.net/bj_xiufeng/article/details/6825234

理论联系实际,单单只讲理论那就成了纸上谈兵,用一个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-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.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- neethi-2.0.4.jar ??
  13. saaj-api-1.3.jar ??
  14. saaj-impl-1.3.2.jar ??
  15. wsdl4j-1.6. wstx-asl-3.2.8.jar ??
  16. XmlSchema-1.4.5.jar ??
  17. xml-resolver-1.2.jar ??
  18. cxf-2.2.2.jar ?
?接下就是HelloWorld Demo开发了?
?? 第一步:新建一个webservice接口?
@WebService??
  • public?interface?IHelloWorld?{ ??
  • ????//@WebParam给参数命名,提高可代码可读性。此项可选???
  • public?String?sayHi(@WebParam(name="text")?String?text); ??
  • } ?
  • 通过注解@WebService申明为webservice接口?
    ?? 第二步,实现WebService接口?
    ?? ??class?HelloWorldImpl?implements?IHelloWorld?{ ??
  • ??
  • public?String?sayHi(String?name)?{ ??
  • ????System.out.println("sayHello?is?called?by?"?+?name); ??
  • ????return?"Hello?"?+?name; ??
  • } ??
  • ???} ?
  • 第三步,创建服务端?
    ??public?class?Server?{ ??
  • private?Server(){ ??
  • ????IHelloWorld?helloWorld?=?new?HelloWorldImpl(); ??
  • //创建WebService服务工厂???
  • ????JaxWsServerFactoryBean?factory?=?new?JaxWsServerFactoryBean(); ??
  • //注册WebService接口???
  • ????factory.setServiceClass(IHelloWorld.class); ??
  • //发布接口???
  • ????factory.setAddress("http://localhost:9000/HelloWorld"); ??
  • ????factory.setServiceBean(helloWorld); ??
  • //创建WebService???
  • ????factory.create(); ??
  • }; ??
  • static?void?main(String[]?args)?throws?InterruptedException{ ??
  • ???????//启动服务端???
  • ??????????????new?Server(); ??
  • ????System.out.println("Server?ready..."); ??
  • //休眠一分钟,便于测试???
  • ???????????????Thread.sleep(1000*60); ??
  • ????System.out.println("Server?exit..."); ??
  • ????System.exit(0); ??
  • 第四步,创建客户端?
    ??
    ???class?Client?{ ??
  • private?Client(){}; ??
  • void?main(String[]?args){ ??
  • //创建WebService客户端代理工厂???
  • ????JaxWsProxyFactoryBean?factory?=?new?JaxWsProxyFactoryBean(); ??
  • ????factory.setServiceClass(HelloWorld.//设置WebService地址???
  • ????factory.setAddress("http://localhost:9000/HelloWorld");????? ??
  • ????IHelloWorld?iHelloWorld?=?(IHelloWorld)factory.create(); ??
  • ????System.out.println("invoke?webservice..."); ??
  • ????System.out.println("message?context?is:"+iHelloWorld.sayHi("?? ??
  • ?????????????????Josen")); ??
  • ???} ??
  • ?最后是万事俱备,只欠测试了?
    ??? 首先,运行服务端程序?
    ??? 其次,打开浏览器,在地址栏中输入http://localhost:9000/HelloWorld?wsdl(因为cxf自带了一个jetty服务器),查看接口是否发布成功,如里浏览器页面显示下面内容,证明接口发布成功?
    ???<wsdl:definitions?name="IHelloWorldService"?targetNamespace="http://client.itdcl.com/"> ??
  • <wsdl:types> ??
  • <xsd:schema?attributeFormDefault="unqualified"?elementFormDefault="unqualified"?targetNamespace="http://client.itdcl.com/"> ??
  • <xsd:element?name="sayHi"?type="tns:sayHi"/> ??
  • <xsd:complexType?name="sayHi"> ??
  • <xsd:sequence> ??
  • <xsd:element?minOccurs="0"?name="text"?type="xsd:string"/> ??
  • </xsd:sequence> ??
  • </xsd:complexType> ??
  • <xsd:element?name="sayHiResponse"?type="tns:sayHiResponse"/> ??
  • <xsd:complexType?name="sayHiResponse"> ??
  • <xsd:element?minOccurs="0"?name="return"?type="xsd:string"/> ??
  • </xsd:schema> ??
  • </wsdl:types> ??
  • <wsdl:message?name="sayHi"> ??
  • <wsdl:part?element="tns:sayHi"?name="parameters"> ??
  • ????</wsdl:part> ??
  • </wsdl:message> ??
  • <wsdl:message?name="sayHiResponse"> ??
  • <wsdl:part?element="tns:sayHiResponse"?name="parameters"> ??
  • <wsdl:portType?name="IHelloWorld"> ??
  • <wsdl:operation?name="sayHi"> ??
  • <wsdl:input?message="tns:sayHi"?name="sayHi"> ??
  • ????</wsdl:input> ??
  • <wsdl:output?message="tns:sayHiResponse"?name="sayHiResponse"> ??
  • ????</wsdl:output> ??
  • </wsdl:operation> ??
  • </wsdl:portType> ??
  • <wsdl:binding?name="IHelloWorldServiceSoapBinding"?type="tns:IHelloWorld"> ??
  • <soap:binding?style="document"?transport="http://schemas.xmlsoap.org/soap/http"/> ??
  • <soap:operation?soapAction=""?style="document"/> ??
  • <wsdl:input?name="sayHi"> ??
  • <soap:body?use="literal"/> ??
  • </wsdl:input> ??
  • <wsdl:output?name="sayHiResponse"> ??
  • </wsdl:output> ??
  • </wsdl:binding> ??
  • <wsdl:service?name="IHelloWorldService"> ??
  • <wsdl:port?binding="tns:IHelloWorldServiceSoapBinding"?name="IHelloWorldPort"> ??
  • <soap:address?location="http://localhost:9000/HelloWorld"/> ??
  • </wsdl:port> ??
  • </wsdl:service> ??
  • </wsdl:definitions> ?
  • 最后,运行客户端程序,看看效果如果。?
    ??? 这一节就讲到此为止,下节对WSDL定义进行讲解,便于对上面这个Demo进行很好的消化,同时对后面章节启个辅塾作用。?

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读