|
使用Axis,要發(fā)布一個(gè)Web服務(wù)非常簡(jiǎn)單,簡(jiǎn)直不能再簡(jiǎn)單了,盡管看起來(lái)過(guò)程和相關(guān)代碼有些長(zhǎng)。我這個(gè)帖子里用到了這些軟件:Axis 1.1、Eclipse 2.1和Eclipse的Tomcat插件2.2(Sysdeo Tomcat plugin)。發(fā)布的方法如下: 我要發(fā)布的服務(wù)是一個(gè)圖書商店,公布的方法有添加圖書addBook、列表圖書listBooks、刪除圖書deleteBook等等,為簡(jiǎn)單起見這里就只發(fā)布一個(gè)添加圖書方法,因?yàn)槠渌椒ǖ陌l(fā)布是類似的。 1、首先在Eclipse里新建一個(gè)名為bookstore的Tomcat工程,注意要安裝了前面說(shuō)的Tomcat插件才有這個(gè)選項(xiàng)的。如果沒(méi)有安裝可以建立一個(gè)java工程,然后手動(dòng)建立必要的目錄結(jié)構(gòu)(WEB-INF等),并在Tomcat的server.xml里手動(dòng)增加與項(xiàng)目對(duì)應(yīng)的<context>項(xiàng)。 2、接下來(lái)建立圖書類(com.bookstore.model.Book),圖書有名稱、ISDN號(hào)和頁(yè)數(shù)三個(gè)屬性,這是一個(gè)Bean類,代碼如下: package com.bookstore.model;![]() public class Book { private String name; private String ISDN; private int page;![]() public String getISDN() { return ISDN; }![]() public String getName() { return name; }![]() public int getPage() { return page; }![]() public void setISDN(String string) { ISDN = string; }![]() public void setName(String string) { name = string; }![]() public void setPage(int i) { page = i; }![]() }![]() 3、接下來(lái)建立用來(lái)提供服務(wù)的類(com.bookstore.BookSvc),這個(gè)類就是實(shí)際的功能類了,它里面只有一個(gè)public的addBook()方法,而它的參數(shù)只有一個(gè)就是要添加的圖書。代碼如下: package com.bookstore;![]() import com.bookstore.model.Book;![]() public class BookSvc { public void addBook(Book book){ //here you save a book into database System.out.println("Book has been added."); } }![]() 4、現(xiàn)在,把下載來(lái)的Axis解壓縮到一個(gè)文件夾,這里假設(shè)你解到C:\axis-1_1。把C:\axis-1_1\webapps\axis\WEB-INF\lib目錄下的所有.jar文件復(fù)制到你的這個(gè)web應(yīng)用程序的WEB-INF\lib下,再把C:\axis-1_1\webapps\axis\WEB-INF目錄下的web.xml復(fù)制到你的web應(yīng)用程序的WEB-INF下。這個(gè)步驟相當(dāng)于在你的web應(yīng)用程序中配置了Axis。 5、為了讓Axis知道你要發(fā)布哪些服務(wù),你得在WEB-INF下建立一個(gè)名為server-config.wsdd的文件,內(nèi)容如下: <?xml version="1.0" encoding="UTF-8"?> <deployment xmlns="http://xml./axis/wsdd/" xmlns:java="http://xml./axis/wsdd/providers/java"> <globalConfiguration> <parameter name="adminPassword" value="admin"/> <parameter name="attachments.Directory" value="C:\eclipse\workspace\bookstore\WEB-INF\attachments"/> <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/> <parameter name="sendXsiTypes" value="true"/> <parameter name="sendMultiRefs" value="true"/> <parameter name="sendXMLDeclaration" value="true"/> <parameter name="axis.sendMinimizedElements" value="true"/> <requestFlow> <handler type="java:org.apache.axis.handlers.JWSHandler"> <parameter name="scope" value="session"/> </handler> <handler type="java:org.apache.axis.handlers.JWSHandler"> <parameter name="scope" value="request"/> <parameter name="extension" value=".jwr"/> </handler> </requestFlow> </globalConfiguration> <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/> <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/> <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/> <service name="Version" provider="java:RPC"> <parameter name="allowedMethods" value="getVersion"/> <parameter name="className" value="org.apache.axis.Version"/> </service> <service name="BookSvc" provider="java:RPC"> <parameter name="allowedMethods" value="*"/> <parameter name="className" value="com.bookstore.BookSvc"/> </service> <service name="AdminService" provider="java:MSG"> <parameter name="allowedMethods" value="AdminService"/> <parameter name="enableRemoteAdmin" value="false"/> <parameter name="className" value="org.apache.axis.utils.Admin"/> <namespace>http://xml./axis/wsdd/</namespace> </service> <transport name="local"> <responseFlow> <handler type="LocalResponder"/> </responseFlow> </transport> <transport name="http"> <requestFlow> <handler type="URLMapper"/> <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/> </requestFlow> </transport> </deployment>這個(gè)文件里發(fā)布了三個(gè)服務(wù):Version、AdminService和我們的BookSvc。還有一個(gè)方法可以生成這個(gè)文件,好象Axis推薦使用這種生成的方法,就是在同樣目錄下寫一個(gè)deploy.wsdd文件(如果不想看可以直接跳到下一步),內(nèi)容如下: <deployment xmlns="http://xml./axis/wsdd/" xmlns:java="http://xml./axis/wsdd/providers/java"> <service name="BookSvc" provider="java:RPC"> <parameter name="className" value="com.bookstore.BookSvc"/> <parameter name="allowedMethods" value="*"/> </service> </deployment>也就是說(shuō)deploy.wsdd里只包含關(guān)于我們的服務(wù)的描述,確認(rèn)Tomcat已經(jīng)啟動(dòng),然后在同一目錄下用下面這個(gè)命令生成server-config.wsdd文件: java org.apache.axis.client.AdminClient -lhttp://localhost:8080/bookstore/services/AdminService deploy.wsdd其中bookstore是我這個(gè)web應(yīng)用程序的虛擬路徑。 6、重新啟動(dòng)Tomcat,訪問(wèn)路徑http://localhost:8080/bookstore/services,就可以看到現(xiàn)在發(fā)布了三個(gè)Web服務(wù),如下圖。點(diǎn)擊每個(gè)服務(wù)后的wsdl鏈接可以看到對(duì)應(yīng)的WSDL描述。
相關(guān)鏈接: |
|
|
來(lái)自: Joshua > 《WebService》