使用Eclipse建立Webservice
這里講解一個(gè)簡(jiǎn)單的例子;
1.首先我們使用Eclipse建立Webservice工程:
點(diǎn)擊finish之后我們就完成了Eclipse建立Webservice的過程。myeclipse自動(dòng)幫你生成services.xml以及web應(yīng)用目錄結(jié)構(gòu),其中的services.xml是你導(dǎo)出服務(wù)的配置文件,注意在WEB-INF/web.xml文件中配置了xfire自己的servlet.
- 〈servlet〉
 - 〈servlet-name〉XFireServlet〈/servlet-name〉
 - 〈servlet-class〉org.codehaus.xfire.
 - transport.http.XFireConfigurableServlet
 - 〈/servlet-class〉
 - 〈load-on-startup〉0〈/load-on-startup〉
 - 〈/servlet〉
 - 〈servlet-mapping〉
 - 〈servlet-name〉XFireServlet〈/servlet-name〉
 - 〈url-pattern〉/services/*〈/url-pattern〉
 - 〈/servlet-mapping〉
 
2.接下來,現(xiàn)在編寫要導(dǎo)出的pojo類,首先是接口:
- packagenet.rubyeye.webservicedemo;
 - //GeneratedbyMyEclipse
 - publicinterfaceIHelloWorldService{
 - publicStringsayHello(Stringname);
 - }
 
這個(gè)接口我們只提供一個(gè)方法:sayHello(),我們沒有采用JSR181標(biāo)注式的聲明方式,還是采用xml配置文件。然后是實(shí)現(xiàn)類:
- packagenet.rubyeye.webservicedemo;
 - //GeneratedbyMyEclipse
 - publicclassHelloWorld
 - ServiceImplimplementsIHelloWorldService{
 - publicStringsayHello(Stringname){
 - return"hello,"+name;
 - }
 - }
 - 最后,配置下services.xml文件:
 - 〈service〉
 - 〈name〉HelloWorldService〈/name〉
 - 〈serviceClass〉
 - net.rubyeye.webservicedemo.IHelloWorldService
 - 〈/serviceClass〉
 - 〈implementationClass〉
 - net.rubyeye.webservicedemo.HelloWorldServiceImpl
 - 〈/implementationClass〉
 - 〈style〉wrapped〈/style〉
 - 〈use〉literal〈/use〉
 - 〈scope〉application〈/scope〉
 - 〈/service〉
 
我們使用Eclipse建立的Webserviceweb服務(wù)名稱叫做HelloWorldService,接口是IHelloWorldService,實(shí)現(xiàn)類是HelloWorldServiceImpl。注意,其實(shí)我們這三個(gè)步驟可以一步完成,只要直接使用myeclipse的new web service向?qū)Ъ纯伞?/P>
#p#
3.然后將此工程部署到tomcat上,通過http://localhost:8081/HelloWorld/services/HelloWorldService?wsdl可以看到生成的wsdl文件。注意,在部署之后,services會(huì)被拷貝到WEB-INFclassesMETA-INFxfire目錄下,xfire會(huì)自動(dòng)搜索此目錄并加載配置文件。我們可以編寫一個(gè)client來測(cè)試web服務(wù),你也可以點(diǎn)擊myeclipse上的Launch the Web Services來測(cè)試web服務(wù)。
4.編寫client代碼:
- packagenet.rubyeye.webservicedemo;
 - importjava.net.MalformedURLException;
 - importjava.util.ArrayList;
 - importjava.util.List;
 - importorg.codehaus.xfire.XFireFactory;
 - importorg.codehaus.xfire.client.
 - XFireProxyFactory;
 - importorg.codehaus.xfire.service.Service;
 - importorg.codehaus.xfire.service.
 - binding.ObjectServiceFactory;
 - publicclassHelloWorldClient{
 - publicstaticvoidmain(Stringargs[]){
 - ServicesrvcModel=newObjectServiceFactory()
 - .create(IHelloWorldService.class);
 - XFireProxyFactoryfactory=
 - newXFireProxyFactory(XFireFactory
 - .newInstance().getXFire());
 - StringhelloWorldURL="http://localhost:
 - 8081/HelloWorld/services/HelloWorldService";
 - try{
 - IHelloWorldServicesrvc=(IHelloWorldService)
 - factory.create(
 - srvcModel,helloWorldURL);
 - System.out.print(srvc.sayHello("dennis"));
 - }catch(MalformedURLExceptione){
 - e.printStackTrace();
 - }
 - }
 - }
 
執(zhí)行,打?。篽ello,dennis
注意,你也可以使用MyEclipse的new webservice client向?qū)ё詣?dòng)生成client,同時(shí)生成供客戶端調(diào)用的stub類等。
最后,我們?cè)倬帉懸粋€(gè)C#調(diào)用Eclipse建立的Webservice的例子。
1.在vs.net中新建一個(gè)windows 應(yīng)用程序項(xiàng)目,并添加一個(gè)button,和一個(gè)label
2.項(xiàng)目菜單——》添加web應(yīng)用,輸入我們要調(diào)用的web服務(wù)的wsdl文件的url,并點(diǎn)擊前往。
3.添加引用之后,vs.net會(huì)自動(dòng)幫你生成提供給客戶端調(diào)用的stub等,這些文件在名為localhost的命名空間下。此空間下將有一個(gè)類,名為HelloWorldService。最后,在button1的onclick事件中添加代碼:
- usingSystem;
 - usingSystem.Collections.Generic;
 - usingSystem.ComponentModel;
 - usingSystem.Data;
 - usingSystem.Drawing;
 - usingSystem.Text;
 - usingSystem.Windows.Forms;
 - namespaceMyProject
 - {
 - publicpartialclassForm1:Form
 - {
 - localhost.HelloWorldServicehelloService=
 - newlocalhost.HelloWorldService();
 - publicForm1()
 - {
 - InitializeComponent();
 - }
 - privatevoidbutton1_Click(objectsender,
 - EventArgse)
 - {
 - label1.Text=helloService.sayHello("dennis");
 - }
 - }
 - }
 
我們new一個(gè)HelloWorldService ,并調(diào)用sayHello方法,將結(jié)果顯示在label上
4.執(zhí)行ctr+F5
【編輯推薦】


























 
 
 

 
 
 
 