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. cxf_demo
7.
8. index.html
9. index.htm
10. index.jsp
11. default.html
12. default.htm
13. default.jsp
14.
15. cxf_demo
16.
17.
18. CXFServlet
19. com.test.server.WebServlet
20. 1
21.
22.
23. CXFServlet
24. /ws/*
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">cxf_demoindex.htmlindex.htmindex.jspdefault.htmldefault.htmdefault.jspcxf_demoCXFServletcom.test.server.WebServlet1CXFServlet/ws/*
将上述项目发布到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之后,结果如下: