<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    精彩的人生

    好好工作,好好生活

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      147 Posts :: 0 Stories :: 250 Comments :: 0 Trackbacks
    jUDDI,發音(Judy),是服務于WebServices 的UDDI的java實現開源包。

    1 安裝

    1.1 下載

    下載地址:http://ws.apache.org/juddi/releases.html

    目前的jUDDI的最新版本是0.9rc3(Release Candidate #3 for Version 0.9),不過在這個版本中有一些的bug。

    juddi0.9版本發布應該是不會久,可以參考下面這段話,是Viens Stephen(juddi主要開發者之一)在mail list中說的:we've closed 40+ issues since January 1, 2005. We'll be releasing a 0.9rc4 as soon as Axis 1.2 final is released and then releasing a 0.9 final a few weeks after that. (March 22, 2005)

    1.2 數據庫安裝

    UDDI需要有一個地方來存儲注冊的數據,因此首先要選擇一個關系數據庫安裝。JUDDI可以使用任何支持ANSI standard SQL關系數據庫( 例如MySQL, DB2, Sybase, JdataStore等)。本實例使用MySQL。

    數據庫安裝完成后,在MySQL數據庫中運行juddi-0.9rc3\\sql\\mysql\\create_database.sql, juddi-0.9rc3\\sql\\mysql\\insert_publishers.sql。數據庫準備完成。

    1.3 安裝juddi及配置

    首先將juddi-0.9rc3\\webapp下的juddi文件夾復制到Tomcat下的webapps中,并將 mysql-connector-java-3.1.7\\mysql-connector-java-3.1.7-bin.jar復制到Tomcat 5.0\\webapps\\juddi\\WEB-INF\\lib下。

    下面就是連接數據庫的配置,在Tomcat/conf/server.xml的Host element中加入:
    <Context path="/juddi" docBase="juddi" debug="5" reloadable="true" crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_juddiDB_log"
    suffix=".txt" timestamp="true"/>
    <Resource name="jdbc/juddiDB" auth="Container" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/juddiDB">
    <parameter>
    <name>factory</name>
    <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    <!-- Maximum number of dB connections in pool. Make sure you
    configure your mysqld max_connections large enough to handle
    all of your db connections. Set to 0 for no limit. -->
    <parameter><name>maxActive</name><value>100</value></parameter>
    <!-- Maximum number of idle dB connections to retain in pool.
    Set to 0 for no limit. -->
    <parameter><name>maxIdle</name><value>30</value></parameter>
    <parameter><name>maxWait</name><value>10000</value></parameter>
    <!-- MySQL dB username and password for dB connections 帳號密碼根據數據庫安裝配置修改 -->
    <parameter><name>username</name><value>root</value></parameter>
    <parameter><name>password</name><value>****</value></parameter>
    <!-- Class name for mysql JDBC driver -->
    <parameter>
    <name>driverClassName</name>
    <value>com.mysql.jdbc.Driver</value>
    </parameter>
    <!-- The JDBC connection url for connecting to your MySQL dB.
    The autoReconnect=true argument to the url makes sure that the
    mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
    connection. mysqld by default closes idle connections after 8 hours.
    數據庫url連接配置
    -->
    <parameter>
    <name>url</name>
    <value>jdbc:mysql://host.domain.com:3306/juddi?autoReconnect=true</value>
    </parameter>
    <parameter>
    <name>validationQuery</name>
    <value>select count(*) from PUBLISHER</value>
    </parameter>
    </ResourceParams>
    </Context>

    1.4 本地安裝檢查

    訪問http://127.0.0.1:8080/juddi/happyjuddi.jsp頁面,此頁面檢查了jUDDI所必須的包和配置的正確性,并測試數據庫連接是否成功。 如果沒有紅色文字,即本地安裝成功,即可進行webservices的發布發現等服務。

    2 測試實例



    以上安裝成功的是UDDI的服務器端,而進行發布、查找服務的客戶端的應用則要用jUDDI、UDDI4J等包來進行開發。我們可以直接使用jUDDI自 帶的測試代碼來進行客戶端使用的學習。

    2.1 使用uddi4j測試

    使用uddi4j作為客戶端進行測試。

    代碼位置:juddi-0.9rc3\\src\\uddi4j\\org\\apache\\juddi\\uddi4j

    新建立好一個工程并引入此代碼,然后對代碼進行必要的修改,主要是包名和配置。引入必要的包,比如:junit.jar、 uddi4j.jar、juddi.jar、soap.jar等(因為歐的代碼庫中有很多種代碼,對應很多包,不知道其他哪些是必須的了:)。

    接著是數據庫的初始化,需要插入一個可以添加其他Publisher的Publisher,sql 語句: INSERT INTO PUBLISHER (PUBLISHER_ID,PUBLISHER_NAME,ENABLIED,ADMIN) VALUES ('juddi','juddi user','true','true');

    調試代碼后,運行TestAll測試,您可能會發現測試FAILURE很多,這些當中有些是測試代碼的錯誤,也有可能是juddi-0.9rc3的缺陷( juddi-0.9rc3不是正式發布版)。

    以下列舉一些本測試案例測試失敗的可能出現的修改方法:

    2.1.1 加載配置文件時訪問不到samples.prop

    我的解決辦法是將建立一個新配置文件位置,在工程目錄下的:conf\\samples.prop。

    在Configurator.load()方法中代碼可以這樣修改:
        Properties config = new Properties();
    try {
    config.load(new java.io.FileInputStream("./conf/samples.prop"));
    }
    catch (Exception e) {
    System.out.println("Error loading samples property file\\n" + e);
    }
    解決方法很多,您可以自己思索。

    2.1.2 TransportClassName配置錯誤

    如果錯誤提示中有這樣的報告,即可能是此錯誤:
    org.xml.sax.SAXParseException: Element or attribute do not match QName production: QName::=(NCName':')?NCName.

    在當前測試實例代碼中的默認配置(samples.prop)中,TransportClassName定義成org.uddi4j.transport.ApacheSOAPTransport, 而我們使用的包是axis.jar,因此需要修改成相應的類,代碼修改如下:
    # -----------------------------------------------------------------------

    # Transport classname. Typically defined on commandline as

    # -Dorg.uddi4j.TransportClassName=xxx.

    # -----------------------------------------------------------------------

    #TransportClassName=org.uddi4j.transport.ApacheSOAPTransport

    TransportClassName=org.uddi4j.transport.ApacheAxisTransport

    # TransportClassName=org.uddi4j.transport.HPSOAPTransport

    2.1.3 TestFindBusiness案例不通過

    TestFindBusiness中有大小寫匹配測試,但是在juddi-0.9rc3中的大小寫匹配(caseSensitiveMatch)有bug,因此可以將大小寫匹配的測 試案例注釋掉。

    2.1.4 PublisherManager的代碼錯誤

    在測試Test_save_tModel的時候_testAuthTokenExpired()中,我們測試過期驗證時,在錯誤匹配的時候,會出現測試失敗,如果捕捉這個 匹配的結果,你會發現,出錯的類型是E_authTokenRequired而不是期待的E_authTokenExpired。

    這是因為在我們所獲得的AuthToken是空的,在根源就是在PublisherManager. getExpiredAuthToken(String, String)方法中,代碼:
    RegistryProxy proxy = new RegistryProxy();
    proxy的實例的配置是空的。因此,我們修改這個方法變成:
      /**

    * changed by xio

    * @param publisher String

    * @param password String

    * @param testprops Properties:增加的參數,傳入基本配置

    * @return String

    */

    public static String getExpiredAuthToken(String publisher, String password,

    Properties testprops) {

    Properties props = new Properties();

    props.setProperty(RegistryProxy.ADMIN_ENDPOINT_PROPERTY_NAME,

    testprops.getProperty("adminURL"));

    props.setProperty(RegistryProxy.INQUIRY_ENDPOINT_PROPERTY_NAME,

    testprops.getProperty("inquiryURL"));

    props.setProperty(RegistryProxy.PUBLISH_ENDPOINT_PROPERTY_NAME,

    testprops.getProperty("publishURL"));



    RegistryProxy proxy = new RegistryProxy(props);

    AuthToken token = null;

    AuthInfo authInfo = null;

    String ret = null;

    try {

    token = proxy.getAuthToken(publisher, password);

    authInfo = token.getAuthInfo();

    ret = authInfo.getValue();

    System.out.println("getExpiredAuthToken:" + authInfo);

    proxy.discardAuthToken(authInfo);

    }

    catch (Exception ex) {

    ex.printStackTrace();

    }

    return ret;

    }

    2.2 使用jUDDI測試

    在juddi-0.9rc3版本中自帶的代碼中沒有客戶端的使用實例,雖然附帶了整個項目代碼的測試代碼,但是估計沒什么人喜歡從這里抽取學 習客戶端使用的學習。

    當然,學習的實例還是有的,在cvs當前的工程代碼中,有個samples的文件夾,這部分代碼便是一個十分齊全的實例(有幾個類沒完成, 但不影響:)。

    Cvs服務器數據:http://ws.apache.org/juddi/cvs.html

    Wincvs的使用請網上下載閱讀。

    其他:在進行代碼學習的同時,建議閱讀webservices相關資料文檔。強烈建議閱讀:理解 UDDI 注冊中心的 WSDL 系列 (http://www-900.ibm.com/developerWorks/cn/webservices/ws-uwsdl/part1/)

    參考資料:
    http://wiki.apache.org/ws/jUDDI_HOW-TOs
    http://ws.apache.org/juddi/lists.html

    原作者:xio@qq.com
    來 源:http://xio.mblogger.cn



    原文地址:http://it.13520.org/ArticleView/2005-9-7/Article_View_121697.Htm

    posted on 2006-07-18 15:04 hopeshared 閱讀(2112) 評論(0)  編輯  收藏 所屬分類: Web Service
    主站蜘蛛池模板: 亚洲国产高清在线一区二区三区| 亚洲AV无码码潮喷在线观看| 国产精品青草视频免费播放| 久久久久亚洲精品无码系列| 免费无码又爽又高潮视频| 成年免费a级毛片| 亚洲男人的天堂在线播放| 午夜毛片不卡高清免费| 大地资源在线资源免费观看| 亚洲日本久久久午夜精品| 免费a级毛片18以上观看精品| 日韩精品在线免费观看| 亚洲一区二区无码偷拍 | 亚洲国产三级在线观看| 永久免费毛片在线播放| 黄色视频在线免费观看| 亚洲最大成人网色香蕉| 亚洲日韩精品一区二区三区| 天天摸夜夜摸成人免费视频| 在线人成免费视频69国产| 亚洲欧美熟妇综合久久久久| 亚洲国产精品久久久天堂| 日本免费网站观看| 久久精品一本到99热免费| 无人视频免费观看免费视频| 亚洲一区二区三区在线 | 亚洲中文字幕一二三四区苍井空| 精品亚洲一区二区三区在线观看| 国产免费毛不卡片| 97人妻精品全国免费视频| 国产精品亚洲一区二区三区 | 亚洲精品第一国产综合精品| 亚洲国产日韩在线观频| 成人毛片免费播放| 最近中文字幕免费mv在线视频| 成人免费夜片在线观看| 亚洲AV日韩综合一区| 亚洲丰满熟女一区二区v| 亚洲午夜福利AV一区二区无码| 免费又黄又硬又爽大片| 成人最新午夜免费视频|