使用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. }  
  24. } 

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

4.执行ctr+F5

dennis 

 

dennis 

【编辑推荐】

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

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...