<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
    主站蜘蛛池模板: 在线视频亚洲一区| 日韩欧美亚洲国产精品字幕久久久| 精品无码国产污污污免费网站国产 | 中文字幕a∨在线乱码免费看| 免费人成在线观看网站视频 | 先锋影音资源片午夜在线观看视频免费播放 | 免费高清A级毛片在线播放| 国产伦一区二区三区免费 | 日韩中文字幕免费| 亚洲美国产亚洲AV| 国产免费小视频在线观看| 国产亚洲蜜芽精品久久| 国产黄色一级毛片亚洲黄片大全| 久香草视频在线观看免费| 亚洲精品无码午夜福利中文字幕| a视频免费在线观看| 亚洲日本在线看片| 1000部拍拍拍18勿入免费视频软件| 亚洲人成在线播放| 亚洲精品视频在线观看免费| 亚洲免费网站在线观看| 亚洲熟妇无码av另类vr影视| 免费国产美女爽到喷出水来视频| a毛片成人免费全部播放| 亚洲AV人人澡人人爽人人夜夜| 最近2018中文字幕免费视频| 亚洲日韩看片无码电影| 亚洲色偷拍区另类无码专区| 小日子的在线观看免费| 国产亚洲精品成人AA片| 亚洲精品国产高清不卡在线 | 亚洲av无码一区二区三区天堂| 免费成人在线观看| 日本一道本不卡免费| 亚洲乱码日产一区三区| 免费A级毛片av无码| 亚洲国产日韩一区高清在线| 免费中文熟妇在线影片| 久久九九免费高清视频| 久久精品国产亚洲av麻豆蜜芽| 亚洲国产一成久久精品国产成人综合|