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

WebService CXF学习 1

发布时间:2020-12-16 23:29:54 所属栏目:安全 来源:网络整理
导读:理论联系实际,单单只讲理论那就成了纸上谈兵,用一个HelloWorld Demo可来说明事更加直观。那下面咱们就开始进行讲解: 首先到apache官方网下载apache-cxf-2.2.2,地址:http://cxf.apache.org/ 新建一个Java Project,导入cxf常用.jar包 Java代码 1.commons-l
理论联系实际,单单只讲理论那就成了纸上谈兵,用一个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? ?? commons-logging-1.1.1.jar ?? geronimo-activation_1.1_spec-1.0.2.jar (or Sun's Activation jar) ?? geronimo-annotation_1.0_spec-1.1.1.jar (JSR 250) ?? geronimo-javamail_1.4_spec-1.6.jar (or Sun's JavaMail jar) ?? geronimo-servlet_2.5_spec-1.2.jar (or Sun's Servlet jar) ?? geronimo-ws-metadata_2.0_spec-1.1.2.jar (JSR 181) ?? geronimo-jaxws_2.1_spec-1.0.jar (or Sun's jaxws-api-2.1.jar) ?? geronimo-stax-api_1.0_spec-1.0.1.jar (or other stax-api jar) ?? jaxb-api-2.1.jar ?? jaxb-impl-2.1.12.jar ?? jetty-6.1.21.jar ?? jetty-util-6.1.21.jar ?? neethi-2.0.4.jar ?? saaj-api-1.3.jar ?? saaj-impl-1.3.2.jar ?? wsdl4j-1.6.2.jar ?? wstx-asl-3.2.8.jar ?? XmlSchema-1.4.5.jar ?? xml-resolver-1.2.jar ?? cxf-2.2.2.jar ?? 接下就是HelloWorld Demo开发了 ?? 第一步:新建一个webservice接口 Java代码 1.@WebService? 2.public interface IHelloWorld {?? 3.??? //@WebParam给参数命名,提高可代码可读性。此项可选?? 4.blic String sayHi(@WebParam(name="text") String text);?? 5.}? ?? @WebService ?? public interface IHelloWorld { ?????? //@WebParam给参数命名,提高可代码可读性。此项可选 ??? public String sayHi(@WebParam(name="text") String text); ?? } ?? 通过注解@WebService申明为webservice接口 ?? 第二步,实现WebService接口 Java代码 1.? @WebService? 2.? public class HelloWorldImpl implements IHelloWorld {?? 3.? 4.public String sayHi(String name) {?? 5.??? System.out.println("sayHello is called by " + name);?? 6.??? return "Hello " + name;?? 7.}?? 8.? 9.?? }? ?? @WebService ?? public class HelloWorldImpl implements IHelloWorld { ??? public String sayHi(String name) { ??? ??? System.out.println("sayHello is called by " + name); ??? ??? return "Hello " + name; ??? } ??? } ?? 第三步,创建服务端 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("http://localhost:9000/HelloWorld");?? 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("Server ready...");?? 20.??? //休眠一分钟,便于测试?? 21.?????????????? Thread.sleep(1000*60);?? 22.??? System.out.println("Server exit...");?? 23.??? System.exit(0);?? 24.}?? 25.?? }? ?? 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(); ??? }; ??? ??? public 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); ??? } ??? } ??? 第四步,创建客户端 ?? 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("http://localhost:9000/HelloWorld");??????? 12.??? IHelloWorld iHelloWorld = (IHelloWorld)factory.create();?? 13.??? System.out.println("invoke webservice...");?? 14.??? System.out.println("message context is:"+iHelloWorld.sayHi("???? 15.???????????????? Josen"));?? 16.??? System.exit(0);?? 17.}?? 18.?? }?? 19.??? ??? public class Client { ??? private Client(){}; ??? ??? public static void main(String[] args){ ??? ??? //创建WebService客户端代理工厂 ??? ??? JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); ??? ??? //注册WebService接口 ??? ??? factory.setServiceClass(HelloWorld.class); ??? ??? //设置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")); ??? ??? System.exit(0); ??? } ??? } ?? ??? 最后是万事俱备,只欠测试了 ??? 首先,运行服务端程序 ??? 其次,打开浏览器,在地址栏中输入http://localhost:9000/HelloWorld?wsdl(因为cxf自带了一个jetty服务器),查看接口是否发布成功,如里浏览器页面显示下面内容,证明接口发布成功

(编辑:李大同)

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

    推荐文章
      热点阅读