小秋的家

          home

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            1 Posts :: 91 Stories :: 17 Comments :: 0 Trackbacks

          常用鏈接

          留言簿(9)

          我參與的團(tuán)隊(duì)

          搜索

          •  

          最新評(píng)論

            第二種:用eclipse創(chuàng)建webservice:  
             最近看了一下web service,算是揭開(kāi)了它的面紗,才發(fā)現(xiàn)它原來(lái)并不神秘,相反很簡(jiǎn)單,但是它卻很強(qiáng)大.
          一句話來(lái)描述它:跨語(yǔ)言平臺(tái),將寫(xiě)好的組件利用接口分布式發(fā)布出來(lái),供其他人調(diào)用.
          呵呵,當(dāng)然,可能說(shuō)的不完全對(duì),大家就包含了,因?yàn)閮H僅只是看了一天,寫(xiě)了一個(gè)簡(jiǎn)單的例子.
          這里寫(xiě)一下如何發(fā)布一個(gè)簡(jiǎn)單的web service吧....
          Web Services引擎現(xiàn)在有兩大主流:XFire和AXIS2
          這里我只介紹XFire,這兩個(gè)主流我都分別寫(xiě)了一個(gè)簡(jiǎn)單的例子,個(gè)人覺(jué)的XFire比AXIS2更容易一點(diǎn).
          首先,在看后面的例子講解前,有必要去看一下web service的教程,它究竟能做什么,它的標(biāo)準(zhǔn)是什么。
          這里我介紹一個(gè)網(wǎng)址,淺顯而易懂,有的解釋的過(guò)于復(fù)雜,讓人看的挺暈的.
          http://www.w3school.com.cn/webservices/ws_platform.asp
          下面開(kāi)始講解一個(gè)由XFire做為web service引擎的例子
          首先來(lái)講解服務(wù)端的構(gòu)建:
          服務(wù)器環(huán)境是:jdk1.6+Apache tomcat5.5
          1.我們首先寫(xiě)一個(gè)接口:IBankingService
             public interface IBankingService {
                 public int transferFunds(int a, int b);
             }
          2.寫(xiě)它的實(shí)現(xiàn)類:BankingService
             public class BankingService implements IBankingService {

                 //Default constructor.
                 public BankingService() {
                 }
              
                 public int transferFunds(int a, int b) {
                    int c = a + b;
                    return c;
                }
          }
          3.Web應(yīng)用的部署描述符

            在Java中,Web應(yīng)用程序通常需要至少一個(gè)部署描述符(叫做web.xml)對(duì)其進(jìn)行配置。XFire本身是一個(gè)基于servlet的應(yīng)用 程序。因此,我們需要增加必要的引用到描述符文件中。然后我們還必須配置將要?jiǎng)?chuàng)建的Web Services。我們使用一個(gè)稱為services.xml的新文件來(lái)完成這件事。

          首先,修改web.xml。

              <?xml version="1.0" encoding="UTF-8"?>
              <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
              http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
              <servlet>
                  <servlet-name>XFireServlet</servlet-name>
                  <servlet-class>
                      org.codehaus.xfire.transport.http.XFireConfigurableServlet
                  </servlet-class>
              </servlet>
              <servlet-mapping>
                  <servlet-name>XFireServlet</servlet-name>
                  <url-pattern>/servlet/XFireServlet/*</url-pattern>
              </servlet-mapping>
              <servlet-mapping>
                  <servlet-name>XFireServlet</servlet-name>
                  <url-pattern>/services/*</url-pattern>
              </servlet-mapping>
              <welcome-file-list>
                  <welcome-file>index.jsp</welcome-file>
              </welcome-file-list>
             </web-app>
          4.在WebRoot\META-INF目錄下新建xfire文件夾,然后在xfire目錄下添加一個(gè)XFire使用的配置文件 services.xml,該配置文件中的內(nèi)容反映了要將哪些java類發(fā)布為web服務(wù)。本例中的services.xml內(nèi)容如下:
          <beans xmlns="http://xfire.codehaus.org/config/1.0"> 
             <service>
               <name>Banking</name>
               <namespace>mybank</namespace>
               <serviceClass>com.xfire.test.IBankingService</serviceClass>
               <implementationClass>com.xfire.test.BankingService</implementationClass>
             </service>   
          </beans>
          5.加入xfire的庫(kù)文件,包含以下jar包:
          XFire和其它類庫(kù),需要得到所有必需的類庫(kù)。我們?cè)鯓拥玫剿鼈兡?去XFire網(wǎng)站,下載xfire-distribution- 1.0.zip,然后解壓到一個(gè)本地文件夾。復(fù)制下面的jar文件和它的庫(kù)文件夾到WEB-INF/lib中:
          •   activation-1.0.2.jar
          •   commons-codec-1.3.jar
          •   commons-httpclient-3.0.jar
          •   commons-logging-1.0.4.jar
          •   jaxen-1.1-beta-8.jar
          •   jdom-1.0.jar
          •   log4j-1.2.x.jar
          •   mail-1.3.3_01.jar
          •   spring-1.2.x.jar
          •   stax-api-1.0.jar
          •   wsdl4j-1.5.2.jar
          •   wstx-asl-2.9.jar
          •   xbean-2.1.0.jar
          •   xbean-spring-2.2.jar
          •   xfire-all-1.0.jar
          •   XmlSchema-1.0.jar

          6.打war包,放到tomcat下,開(kāi)啟tomcat,然后訪問(wèn)http://localhost:8080/xfireDemo/services/Banking?wsdl
          xfireDemo是我項(xiàng)目的名稱.
          如果頁(yè)面中看到wsdl的XML文件,說(shuō)明服務(wù)端發(fā)布成功了.如果拋異常了:說(shuō)明services.xml文件不存在
          “org.springframework.beans.factory.BeanDefinitionStoreExcep
          解決方案:把WebRoot下整個(gè)META-INF文件夾(包含前面生成的xfire文件)拷貝到WebRoot下的classes文件夾下就OK了
          到這里,我相信大家都能看到在頁(yè)面上看到wdsl文件內(nèi)容了,可以看看內(nèi)容具體是什么,如果大家了解過(guò)wdsl.

          現(xiàn)在開(kāi)始構(gòu)建客戶端:

          說(shuō)明:本客戶端使用xfire針對(duì)eclipse開(kāi)發(fā)的插件(還可使用ant生成客戶端,請(qǐng)參考其他材料),下載和使用說(shuō)明參見(jiàn):http://xfire.codehaus.org/Eclipse+Plugin

          1.在eclipse中新建一個(gè)名為helloClient的java object。

          2.使用xfire插件調(diào)用服務(wù)器端的wsdl(web服務(wù)描述語(yǔ)言)文檔生成客戶端可調(diào)用的java類,

             打開(kāi)file->new->other->Code generation from wsdl document

            

           3.新建一個(gè)名為Client的客戶端類。其代碼如下:

          public class Client {

              BankingClient bc;
              BankingPortType bpt;
             
              public Client(){
                  bc=new BankingClient();
                  bpt=bc.getBankingHttpPort();
                  System.out.println("result:     "+bpt.transferFunds(2, 3));
              }
             
              public static void main(String[] args){
                  Client c = new Client();
              }
          }
          4.如果這個(gè)時(shí)候運(yùn)行,你可能會(huì)遇見(jiàn)以下報(bào)錯(cuò)信息:
          Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/methods/RequestEntity
          這是由于缺少apache的commons httpclient庫(kù)文件.添加進(jìn)去再試,又報(bào)錯(cuò)
          Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException
          這是由于缺少apache的commons codec庫(kù)文件,添加進(jìn)去再試,成功顯示:result:     5
          下面是服務(wù)端和客戶端結(jié)構(gòu)截圖:

          好了,我這人挺懶的,都不喜歡寫(xiě)些筆記,今天真是難得寫(xiě)一次呀。


          posted on 2010-07-01 15:17 棋劍小秋 閱讀(988) 評(píng)論(0)  編輯  收藏 所屬分類: web service
          主站蜘蛛池模板: 如皋市| 奉化市| 思茅市| 土默特右旗| 靖江市| 基隆市| 凌云县| 锡林郭勒盟| 崇仁县| 湘潭县| 布拖县| 临汾市| 北宁市| 盘锦市| 伊通| 房山区| 广宗县| 昌宁县| 天门市| 漯河市| 寿阳县| 西畴县| 桂林市| 三河市| 花莲县| 丹江口市| 达拉特旗| 南充市| 孝义市| 修文县| 黎城县| 南丰县| 留坝县| 平乡县| 南阳市| 梧州市| 文昌市| 寻乌县| 广水市| 漳平市| 平顶山市|