使用Eclipse建立Webservice




本文通过简单小实例讲解Eclipse建立Webservice、pojo类、HelloWorldService接口、实现类是HelloWorldServiceImpl三个步骤来一步一步完成!

AD:WOT2015 互联网运维与开发者大会 热销抢票


    这里讲解一个简单的例子;

    1.首先我们使用Eclipse建立Webservice工程:

    建立webservice 

    项目界面 

    xfire调用webservice 

    点击finish之后我们就完成了Eclipse建立Webservice的过程。myeclipse自动帮你生成services.xml以及web应用目录结构,其中的services.xml是你导出服务的配置文件,注意在WEB-INF/web.xml文件中配置了xfire自己的servlet.

       
       
    1. 〈servlet〉  
    2. 〈servlet-name〉XFireServlet〈/servlet-name〉  
    3. 〈servlet-class〉org.codehaus.xfire.  
    4. transport.http.XFireConfigurableServlet  
    5. 〈/servlet-class〉  
    6. load-on-startup〉0〈/load-on-startup〉  
    7. 〈/servlet〉  
    8. 〈servlet-mapping〉  
    9. 〈servlet-name〉XFireServlet〈/servlet-name〉  
    10. 〈url-pattern〉/services/*〈/url-pattern〉  
    11. 〈/servlet-mapping〉  

    2.接下来,现在编写要导出的pojo类,首先是接口:

       
       
    1. packagenet.rubyeye.webservicedemo;  
    2. //GeneratedbyMyEclipse  
    3. publicinterfaceIHelloWorldService{  
    4. publicStringsayHello(Stringname);  
    5. }  

    这个接口我们只提供一个方法:sayHello(),我们没有采用JSR181标注式的声明方式,还是采用xml配置文件。然后是实现类:

       
       
    1. packagenet.rubyeye.webservicedemo;  
    2. //GeneratedbyMyEclipse  
    3. publicclassHelloWorld  
    4. ServiceImplimplementsIHelloWorldService{  
    5. publicStringsayHello(Stringname){  
    6. return"hello,"+name;  
    7. }  
    8. }  
    9.  
    10. 最后,配置下services.xml文件:  
    11. 〈service〉  
    12. name〉HelloWorldService〈/name〉  
    13. 〈serviceClass〉  
    14. net.rubyeye.webservicedemo.IHelloWorldService  
    15. 〈/serviceClass〉  
    16. 〈implementationClass〉  
    17. net.rubyeye.webservicedemo.HelloWorldServiceImpl  
    18. 〈/implementationClass〉  
    19. 〈style〉wrapped〈/style〉  
    20. 〈use〉literal〈/use〉  
    21. 〈scope〉application〈/scope〉  
    22. 〈/service〉  

    我们使用Eclipse建立的Webserviceweb服务名称叫做HelloWorldService,接口是IHelloWorldService,实现类是HelloWorldServiceImpl。注意,其实我们这三个步骤可以一步完成,只要直接使用myeclipse的new web service向导即可。

    HelloWorldService

    HelloWorldService

    3.然后将此工程部署到tomcat上,通过http://localhost:8081/HelloWorld/services/HelloWorldService?wsdl可以看到生成的wsdl文件。注意,在部署之后,services会被拷贝到WEB-INFclassesMETA-INFxfire目录下,xfire会自动搜索此目录并加载配置文件。我们可以编写一个client来测试web服务,你也可以点击myeclipse上的Launch the Web Services来测试web服务。

    HelloWorldService

    4.编写client代码:

       
       
    1. packagenet.rubyeye.webservicedemo;  
    2. importjava.net.MalformedURLException;  
    3. importjava.util.ArrayList;  
    4. importjava.util.List;  
    5. importorg.codehaus.xfire.XFireFactory;  
    6. importorg.codehaus.xfire.client.  
    7. XFireProxyFactory;  
    8. importorg.codehaus.xfire.service.Service;  
    9. importorg.codehaus.xfire.service.  
    10. binding.ObjectServiceFactory;  
    11. publicclassHelloWorldClient{  
    12. publicstaticvoidmain(Stringargs[]){  
    13. ServicesrvcModel=newObjectServiceFactory()  
    14. .create(IHelloWorldService.class);  
    15. XFireProxyFactoryfactory=  
    16. newXFireProxyFactory(XFireFactory  
    17. .newInstance().getXFire());  
    18.  
    19. StringhelloWorldURL="http://localhost:  
    20. 8081/HelloWorld/services/HelloWorldService";  
    21. try{  
    22. IHelloWorldServicesrvc=(IHelloWorldService)  
    23. factory.create(  
    24. srvcModel,helloWorldURL);  
    25. System.out.print(srvc.sayHello("dennis"));  
    26. }catch(MalformedURLExceptione){  
    27. e.printStackTrace();  
    28. }  
    29. }  
    30. }  

    执行,打印:hello,dennis

    注意,你也可以使用MyEclipse的new webservice client向导自动生成client,同时生成供客户端调用的stub类等。

    最后,我们再编写一个C#调用Eclipse建立的Webservice的例子。

    1.在vs.net中新建一个windows 应用程序项目,并添加一个button,和一个label

    dennis

    dennis

    2.项目菜单——》添加web应用,输入我们要调用的web服务的wsdl文件的url,并点击前往。

    dennis

    3.添加引用之后,vs.net会自动帮你生成提供给客户端调用的stub等,这些文件在名为localhost的命名空间下。此空间下将有一个类,名为HelloWorldService。最后,在button1的onclick事件中添加代码:
       
       
    1. usingSystem;  
    2. usingSystem.Collections.Generic;  
    3. usingSystem.ComponentModel;  
    4. usingSystem.Data;  
    5. usingSystem.Drawing;  
    6. usingSystem.Text;  
    7. usingSystem.Windows.Forms;  
    8. namespaceMyProject  
    9. {  
    10. publicpartialclassForm1:Form  
    11. {  
    12. localhost.HelloWorldServicehelloService=  
    13. newlocalhost.HelloWorldService();  
    14. publicForm1()  
    15. {  
    16. InitializeComponent();  
    17. }  
    18. privatevoidbutton1_Click(objectsender,  
    19. EventArgse)  
    20. {  
    21. label1.Text=helloService.sayHello("dennis");  
    22. }  
    23. }  

    我们new一个HelloWorldService ,并调用sayHello方法,将结果显示在label上

    4.执行ctr+F5

    dennis 

    dennis 

    • 0
      点赞
    • 1
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值