使用Eclipse建立Webservice
创始人
2024-04-28 21:01:12
0

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

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

#p#

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 

【编辑推荐】

  1. C#中定义装箱和拆箱详解
  2. 浅谈C#类型系统
  3. 三种不同的C#异常类型
  4. 详细介绍C#编译器
  5. C#异常机制的相关解释

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...