WebService使用的一些总结.docx
- 文档编号:11967671
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:8
- 大小:47.75KB
WebService使用的一些总结.docx
《WebService使用的一些总结.docx》由会员分享,可在线阅读,更多相关《WebService使用的一些总结.docx(8页珍藏版)》请在冰豆网上搜索。
WebService使用的一些总结
webService总结
(一)——使用CXF发布和调用webService(不使用Spring)
分类:
webService2014-07-2617:
562581人阅读评论(7)收藏举报
webservicehelloworldspringcxfaxis2
CXF和Axis2是两个比较流行的webService框架,接下来我会写几篇博客简单介绍如何使用这两种框架。
首先,先简单介绍一下CXF的使用。
CXF发布webService有多种方法,这里我介绍三种:
1、不使用Spring,CXF自动发布webService
2、不使用Spring,CXF手动发布webService
3、使用Spring+CXF发布webService
这篇博客以实例介绍第一种方法——不使用Spring,CXF自动发布webService。
服务端:
目录结构如下:
IHelloWorldServer代码:
[java]viewplaincopyprint?
1. Microsoft YaHei;font-size: 18px;">package com.test.server; 2. 3.public interface IHelloWorldServer { 4. public String sayHello(String username); 5.}
MicrosoftYaHei;font-size: 18px;">packagecom.test.server;publicinterfaceIHelloWorldServer{publicStringsayHello(Stringusername);} HelloWorldServerImp代码: [java]viewplaincopyprint? 1. Microsoft YaHei;font-size: 18px;">package com.test.server; 2. 3.public class HelloWorldServerImp implements IHelloWorldServer { 4. 5. @Override 6. public String sayHello(String username) { 7. return username+" : HelloWorld"; 8. } 9.} MicrosoftYaHei;font-size: 18px;">packagecom.test.server;publicclassHelloWorldServerImpimplementsIHelloWorldServer{@OverridepublicStringsayHello(Stringusername){returnusername+": HelloWorld";}} 这两个是最最简单的java类。 WebServlet代码: [java]viewplaincopyprint? 1. Microsoft YaHei;font-size: 18px;">package com.test.server; 2. 3.import javax.servlet.ServletConfig; 4. 5.import org.apache.cxf.Bus; 6.import org.apache.cxf.BusFactory; 7.import org.apache.cxf.frontend.ServerFactoryBean; 8.import org.apache.cxf.transport.servlet.CXFNonSpringServlet; 9. 10.public class WebServlet extends CXFNonSpringServlet { 11.// private static final String SERVICE_SUFFIX = ""; 12. private static final long serialVersionUID = 1L; 13. 14. @Override 15. protected void loadBus(ServletConfig servletConfig) { 16. super.loadBus(servletConfig); 17. 18. Bus bus = getBus(); 19. BusFactory.setDefaultBus(bus); 20. HelloWorldServerImp helloWorld = new HelloWorldServerImp();//实现类 21. 22. ServerFactoryBean serverFactoryBean = new ServerFactoryBean(); //server工厂 23. serverFactoryBean.setServiceClass(IHelloWorldServer.class);// 接口类 24. serverFactoryBean.setAddress("/helloWorld"); //服务请求路径 25. serverFactoryBean.setServiceBean(helloWorld); 26. serverFactoryBean.create(); 27. } 28.} MicrosoftYaHei;font-size: 18px;">packagecom.test.server;importjavax.servlet.ServletConfig;importorg.apache.cxf.Bus;importorg.apache.cxf.BusFactory;importorg.apache.cxf.frontend.ServerFactoryBean;importorg.apache.cxf.transport.servlet.CXFNonSpringServlet;publicclassWebServletextendsCXFNonSpringServlet{//privatestaticfinalStringSERVICE_SUFFIX="";privatestaticfinallongserialVersionUID=1L;@OverrideprotectedvoidloadBus(ServletConfigservletConfig){super.loadBus(servletConfig);Busbus=getBus();BusFactory.setDefaultBus(bus);HelloWorldServerImphelloWorld=newHelloWorldServerImp();//实现类ServerFactoryBeanserverFactoryBean=newServerFactoryBean();//server工厂serverFactoryBean.setServiceClass(IHelloWorldServer.class);//接口类serverFactoryBean.setAddress("/helloWorld");//服务请求路径serverFactoryBean.setServiceBean(helloWorld);serverFactoryBean.create();}} 这个Servlet用于发布webService,当程序部署后,容器会自动调用这里面的方法。 Web.xml文件 [html]viewplaincopyprint? 1. Microsoft YaHei;font-size: 18px;"> xml version="1.0" encoding="UTF-8"? > 2. xsi="http: //www.w3.org/2001/XMLSchema-instance" 3. xmlns=" xmlns: web=" 4. xsi: schemaLocation=" 5. id="WebApp_ID" version="3.0"> 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. MicrosoftYaHei;font-size: 18px;"> xmlversion="1.0"encoding="UTF-8"? > xsi="http: //www.w3.org/2001/XMLSchema-instance"xmlns="xmlns: web="xsi: schemaLocation="id="WebApp_ID"version="3.0"> 将上述项目发布到Tomcat中,他会自动发布webService,输入网址: http: //localhost: 8080/cxf_demo_noSpring_1/ws,即可看到发布好的webService,输入网址: http: //localhost: 8080/cxf_demo_noSpring_1/ws/helloWorld? wsdl,查看wsdl文件,能正常显示,说明webService发布成功。 客户端: HelloWorldClient代码: [java]viewplaincopyprint? 1. Microsoft YaHei;font-size: 18px;">package com.test.client; 2.import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; 3. 4.public class HelloWorldClient { 5. public static void main(String[] args) { 6. JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); 7. org.apache.cxf.endpoint.Client client = dcf.createClient("http: //localhost: 8080/cxf_demo_noSpring_1/ws/helloWorld? wsdl"); 8. Object[] objects; 9. try { 10. objects = client.invoke("sayHello", "haitao"); 11. //输出调用结果 12. System.out.println(objects[0].toString()); 13. } catch (Exception e) { 14. e.printStackTrace(); 15. } 16. } 17.} 18. MicrosoftYaHei;font-size: 18px;">packagecom.test.client;importorg.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;publicclassHelloWorldClient{publicstaticvoidmain(String[]args){JaxWsDynamicClientFactorydcf=JaxWsDynamicClientFactory.newInstance();org.apache.cxf.endpoint.Clientclient=dcf.createClient("http: //localhost: 8080/cxf_demo_noSpring_1/ws/helloWorld? wsdl");Object[]objects;try{objects=client.invoke("sayHello","haitao");//输出调用结果System.out.println(objects[0].toString());}catch(Exceptione){e.printStackTrace();}}} run之后,结果如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WebService 使用 一些 总结