【原創】webservice xfire框架例項筆記
Myeclipse 部署webservice文件—xfire
1 環境
Jdk1.5
Tamcat5.5
Myeclipse
以上工具的配置文件省略。
2 Tamcat部署方式
建議使用tamcat與myeclipse不做整合。
2.1 建立工程
在myeclipse中建立webservice工程,file->new->other->web service project
為我們的第一個web service projuect 起個名字webservicetest
其實所謂的webservice也不可能單獨通訊,soap協議是一個更上層的通訊協議,他是凌駕在http協議上的,所以我們web開發熟悉的servlet必不可少,預設就可以啦。
選擇以下工具jar包,
呵呵,工程建立完畢,看看效果。包結構基本上遵守web的工程模式,仔細看多了一個目錄WebServices,下邊的services.xml作用就是我們的應用下提供了幾個webservices服務,另外就是web.xml會發生變化,自己看看吧。
下一步工作我們分三種情況舉例,分別是通訊傳輸基本資料型別,xml資料型別,物件型別。 這三種情況應該可以涵蓋了平時所有的應用。
2.2 基本資料型別通訊
建立一個service服務程式。File->new->other->myeclipse->web service。
仍然需要起一個服務類的名字,FirstService ,myeclipse會為我們生成兩個類服務介面類(IFirstService)和服務實現類(FirstServiceImpl)。
看看你的service.xml發生了什麼變化。
看一下我們的實現類,很簡單,就是返回一個基本資料型別—字串
任務完成一半了,我們先部署一下,看看效果。
部署完成後我們生成wsdl,如下
Myeclipse有個訪問wsdl的工具,如下:
點選到wsdl方式,並錄入wsdl的url路徑。
測試一下功能,結果如下 :
相當於客戶端發一個字串給服務端,服務端處理後返回一個字串響應,功能敘述完畢 。
下來我們開發一個正式的客戶端。
File->new->other->web service client 填寫wsdl訪問路徑。生成的類以及關鍵測試程式碼如下:
2.3 物件型別通訊
簡單基礎型別通訊不能滿足我們日常的系統開發工作,我們還需要支援遠端物件傳輸,保證大資料量的傳輸,不過這就需要考慮效率問題 。壓力測試時要注意webservice的效率測試 。
在生成service端和client端時最好使用兩個工程,把service部署後建立另外一個xfire工程 ,並生成client,在傳輸物件的過程中client端也需要一個User物件,這個物件的作用就是對映伺服器端的自定義物件。
首先我們需要建立服務類,返回引數是自定義物件User。
建立User物件 ,注意這個是伺服器端的。
為了在WSDL中對映引數的型別,我們需要建立一個配置檔案,並和服務類放在一個包下。IFirstService.aegis.xml
伺服器端都準備好了,部署!看看我們wsdl。
注意其中對引數的定義。
下來就是client端的開發了,順便介紹一下xfire客戶端的三種模式:
【1. Client開發者擁有Web服務端的class
即:能拿到服務端的介面Class和Entity類及aegis 配置檔案
//傳統POJO模式
Service srvcModel = new ObjectServiceFactory().create(Hello.class);
XFireProxyFactory factory = new XFireProxyFactory(
XFireFactory.newInstance().getXFire());
String helloWorldURL = " http://localhost:8080/webservice/services/Hello ";
Hello srvc = ( Hello) factory.create(srvcModel,
helloWorldURL);
System.out.println(srvc.sayHello("Robin"));
// JSR181模式,注意這裡Server端開發組需要向Client提供實現類,而不止於//介面,有點危險
Service srvcModel = new AnnotationServiceFactory()
.create(HelloImpl.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
String helloWorldURL = "http://localhost:8080/webservice/services/Hello";
Hello hello = (Hello) factory.create(srvcModel,helloWorldURL);
System.out.println(hello.sayHello("caohuili:"));
2 動態模式
動態模式不需要服務端的class,不過效能和複雜物件對映等估計做得不會太好。
Client client = new Client(new URL(
"http://localhost:8080/webservice/services/Hello?wsdl"));
Object[] results = client
.invoke("sayHello", new Object[] { "Cao," });
System.out.println((String) results[0]);
3 根據WSDL生成Client Stub
//簡單引數的
HelloClient client=new HelloClient();
HelloPortType port =client.getHelloHttpPort();
System.out.println(port.sayHello("hi!"));
//引數複雜的
MemberServiceClient client = new MemberServiceClient();
MemberService memberService = client.getMemberServiceHttpPort();
User user = new User();
/*JAXBElement
"http://memberService", "username"), String.class, "smallnest");
JAXBElement
"http://memberService", "password"), String.class, "123456");*/
ObjectFactory bjFac=new ObjectFactory();
JAXBElement
JAXBElement
user.setUsername(name);
user.setPassword(password);
Member neMember = new Member();
JAXBElement
"http://memberService", "name"), String.class, "邁克");
JAXBElement
"http://memberService", "email"), String.class,
"micro@micro.com");
oneMember.setName(memeberName);
oneMember.setEmail(email);
oneMember.setRank(6);
// 呼叫方法
memberService.addMember(oneMember, user);
】
那我們就完成自己的客戶端 ,很簡單,還是用eclipse新建立一個工程,並根據wsdl生成一個client 。
執行結果 :
2.4 陣列型別通訊
對於基本型別的陣列,不用在aegis.xml檔案中對映配置,生成客戶端時,會生成ArrayOfString的對映型別接收資料。如果是自己定義的複雜物件,就需要在aegis.xml檔案中配置物件對映,這時client會根據wsdl生成對應的ArroyOfxxx物件 。
首先生成服務類 。
生成的wsdl檔案。
客戶端程式 :
執行結果 :
3 Weblogic部署方式
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7389553/viewspace-623089/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【轉載】webservice框架xfire和axis的比較Web框架
- WebService框架大比較(Axis,axis2,Xfire以及cxf)Web框架
- xfire+spring整合webserviceSpringWeb
- 【原創】webservice效能研究Web
- PHP呼叫Webservice例項PHPWeb
- xfire 客戶端呼叫webservice的問題客戶端Web
- WebService學習筆記Web筆記
- 【原創】Oracle 事務探索與例項(二)Oracle
- 【原創】 Oracle 事務探索與例項(一)Oracle
- 【原創】使用普通檔案建立ASM例項ASM
- EJB例項教程筆記(一)筆記
- Rest Webservice 環境搭建流程和例項RESTWeb
- 【原創】Oracle execute plan 原理分析與例項分享Oracle
- [原創]SAP方丈-SAP增強應用例項
- [原創]■■易格式初步研究筆記■■筆記
- MySQL筆記複習(例項 全)MySql筆記
- 板橋里人:J2EE原創教程和例項
- 程式執行例項數量的控制――大全篇[原創]
- 例項恢復相關原理精簡總結(原創)
- 專案引入XFire1.2.6 來實現webservice的基本功能Web
- # JAVA RESTful WebService實戰筆記(一)JavaRESTWeb筆記
- [原創]京東技術解密讀書筆記解密筆記
- [例項分割]Condinst程式碼筆記筆記
- GObject學習筆記(一)類和例項GoObject筆記
- [DB2]原創--新建例項與網路通訊配置DB2
- JS例項學習筆記——w3cschoolJS筆記
- vue入門筆記體系(一)vue例項Vue筆記
- JAVA專案中釋出WebService服務—簡單例項JavaWeb單例
- 【原創】WebService大講堂之Axis2(3):使用services.xml檔案釋出WebServiceWebXML
- ES 筆記四十六:Elasticsearch 資料建模例項筆記Elasticsearch
- C語言例項解析精粹學習筆記——19C語言筆記
- Python 3 學習筆記之類與例項Python筆記
- 《例項化需求》閱讀筆記(2)--Roadmap素描筆記
- 《例項化需求》閱讀筆記(3)-活的文件筆記
- 測試框架 Mocha 例項教程框架
- 例項化 DevOps 原則dev
- C#中WebService的建立、部署和呼叫的簡單例項C#Web單例
- 【原創】WebService大講堂之Axis2(7):將Spring的裝配JavaBean釋出成WebServiceWebSpringJavaBean