jUDDI+Tomcat+Microsoft SQL Server 2000:
1.0 簡介
UDDI 是 Universal Description, Discovery and Integration 的縮寫,它是一份包含了註冊、發 布、以及尋找 Web Services 等仲介服務的技術規範。而 jUDDI(讀音 "judy")則是符合此規範的一份實作,透過 jUDDI,你 可以建立一個屬於自己的 UDDI 註冊中心。本文說明如何安裝 jUDDI 於 Tomcat 伺服器上,雖然官方文件也有說明如何安裝,但是稍嫌簡 略,而且在資料庫的部分,只提到 MySQL、HSQL、Sybase、DB2 這四種資料庫,對於 SQL Server 的使用者來說,可能還要花許 多時間來摸索嘗試。本文則是使用 SQL Server 2000 作為 jUDDI 的資料庫,並且將安裝 jUDDI 的所有必要的步驟都涵蓋進來, 包括 JDK、Tomcat、SQL Server 2000 JDBC Driver、JNDI Data Source 的設定...等等,希望能盡 量減少安裝時可能遭遇的問題。
2.0 安裝步驟
本文件使用的軟體如下(建議您使用相同或更新的版本):
JDK 1.4。
Jakarta Tomcat 5.0.16。
jUDDI 0.8.0。
Microsoft SQL Server 2000。
Microsoft SQL Server 2000 Driver for JDBC。
以上除了 SQL Server 2000 之外,其餘軟體均可免費下載,而且大部分附有原始碼,但是我們只需要下載編譯好的版本 (binary distribution)。請先將 SQL Server 2000 安裝好,並且安裝最新 的 SQL Server 2000 service pack,確定資料庫伺服器已經啟動,然後依照下列各小節的順序進行安裝。
2.1 安裝 Java 2 SDK
到 http://java.sun.com/ 下載 JDK 1.4 或更新的版本,將安裝到 JDK 安裝到 c:\j2sdk 目錄下。
安裝完成後:
將 c:\j2sdk\bin 加入 PATH 環境變數。
新增一個環境變數 JAVA_HOME,其值為 c:\j2sdk(後面均以 %JAVA_HOME% 代表此目錄)。
註:Windows 2000 更改環境變數的方法是,在桌面的〔我的電腦〕圖示上面點一下滑鼠右鍵,選〔內容〕,然後切到〔進階〕頁夾,點一下〔環境變 數〕按鈕。如果你修改了環境變數之後,發現好像沒有作用,可以嘗試重新開機看看。此動作並非必要,只是某些應用程式必須結束後重新開啟才會讀取到新的環境 變數(例如: Total Commander),如果你發現新的環境變數沒有生效,又不知道應該重新執行哪些應用程式,重新開機就是最簡單的方式。
2.2 安裝 Jakarta Tomcat
到 http://jakarta.apache.org/ 下 載 Tomcat 5.x 或最新的版本,安裝到 c:\Tomcat 目錄下。如果你希望 Tomcat 每次開機就執行,可以下載附檔名 為 .exe 的安裝檔案,安裝時會有一個步驟讓你勾選是否要將 Tomcat 安裝成 Service。這裡我們下載的是 .zip 檔 (jakarta-tomcat-5.0.16.zip),因此只要將檔案解壓縮到 c:\Tomcat 目錄下即完成安裝。
安裝完成後:
增加一個系統環境變數 CATALINA_HOME,其值為 c:\Tomcat(後面均以 %CATALINA_HOME% 代表此目錄)。
把 %CATALINA_HOME%\common\lib\servlet-api.jar 複製到 %JAVA_HOME%\jre\lib\ext 目錄下,讓 JDK 找得到這個檔案,才能順利執行 servlet 程式。
啟動 Tomcat(執行 c:\Tomcat\startup.bat)。
開啟瀏覽器,瀏覽網址 http://127.0.0.1:8080,如果有看到 Tomcat 歡迎頁,即表示安裝成功。
由於 Tomcat 5 已經內建 Xerces,所以不需要另外下載其它 XML parser,你也可以到 http://xml.apache.org/ 下載最新版的 Xerces 套件,然後覆蓋 Tomcat 內附的函式庫檔案。Tomcat 的 Xerces 套件放在 %CATALINA_HOME%\common\endorsed 目錄下。
2.3 安裝 jUDDI
到 http://sourceforge.net/project/showfiles.php?group_id=42875 下 載最新版的 jUDDI(這裡用的版本是 0.8.0,檔案名稱是 juddi_0.8.0_bin.zip),下載後把壓縮檔中 的 juddi.war 解壓縮到 %CATALINA_HOME%\webapps 目錄下,Tomcat 啟動時會自動安裝此應用程式(如 果 Tomcat 已事先啟動,則等待幾秒後 Tomcat 亦會偵測到並自動安裝此應用程式)。
安裝完成後,在瀏覽器中輸入網址 http://127.0.0.1:8080/juddi,應會看到 jUDDI 的歡迎畫面,點一下畫面上的 validate 超連結 ,以驗證安裝是否正確。
注意畫面下方有兩行紅色的錯誤訊息,這是正常的,因為我們還沒有為 jUDDI 指定如何跟資料庫連接,我們稍後便會解決這個問題。如果你看到的錯誤訊息比圖 2 還要多,請根據錯誤訊息仔細檢查前面的安裝步驟是否遺漏了什麼。
2.4 安裝 Microsoft SQL Server 2000 Driver for JDBC
到 http://www.microsoft.com 下 載 SQL Server 2000 的 JDBC driver,你可以在微軟網站上輸入關鍵 字 "SQL server 2000 jdbc driver",就可以找到最新版的驅動程式,此時我下載的版本 是 SQL Server 2000 Driver for JDBC Service Pack 2。
假設你將 SQL Server 2000 JDBC driver 安裝到 c:\MssqlJdbc 目錄下,接著要設定 CLASSPATH 環境變數,好讓 JVM 能夠找到相關的類別檔。CLASSPATH 的設定如下:
CLASSPATH=.;c:\MssqlJdbc\lib\msbase.jar;c:\MssqlJdbc\lib\msutil.jar;c:\MssqlJdbc\lib\mssqlserver.jar
設定好之後,把 c:\MssqlJdbc\lib 目錄下的所有 .jar 檔案複製一份到 %CATALINA_HOME%\common\lib 目錄下,然後重新啟動 Tomcat(執行 shutdown.bat,然後 startup.bat)。
2.5 設定 jUDDI 的資料來源
對 Tomcat 而言,JNDI 資料來源是定義在 %CATALINA_HOME%\conf\server.xml 檔案裡,你可以為你的應用程式 建立一個 <Context> 標籤,並在其中定義 JNDI 的資源名稱和參數,或者也可以將這些定義寫 在 <DefaultContext> 標籤內,這樣的話,這個 JNDI 資源就可以被所有的 web 應用程式使用。如 果 server.xml 中沒有 <DefaultContext> 標籤,請自行建立一個,最簡單的方式是以字串搜尋找到標 籤 "<!-- Tomcat Root Context -->",然後將 <DefaultContext> 定義在該標籤 後面,像下面這樣:
<!-- Tomcat Root Context -->
<!--
<Context path="" docBase="ROOT" debug="0"/>
-->
<DefaultContext reloadable="true" crossContext="true">
<Resource name="jdbc/juddiDB" scope="Shareable" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/juddiDB">
<parameter>
<name>url</name>
<value>
jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=juddi;user=sa;password=
</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
</ResourceParams>
</DefaultContext>
你只要將上面的棕色部分的文字複製並貼到你的 Tomcat 的 server.xml 檔案中的適當位置即可,注意資料庫的使用者帳號是 sa,密碼未 指定,如果你的 SQL Server 資料庫管理員帳號密碼有另外設定,請自行修改這部分的參數。另外,這裡假 設 SQL Server 2000 跟 Tomcat 在同一台機器上,因此伺服器名稱使用 127.0.0.1,如果你的 SQL Server 位 於其它電腦,請改成正確的 IP 位址。
修改完 server.xml 之後記得一定要重新啟動 Tomcat。
2.6 建立資料庫
使用 SQL Server 2000 的 Enterprise Manager 建立一個資料庫,資料庫名稱是 "juddi"。資料庫建立好之後, 我們還要建立一些 jUDDI 要用的 table 和資料,jUDDI 0.8.0 附了四種資料庫的 DDL 指令檔,但是沒 有 SQL Server 2000 的,你可以使用本文提供的 juddi_mssql.ddl 的指令來建立資料庫。方法是先執行〔程式 集 > Microsoft SQL Server > Query Analyzer〕,進入後在工具列上有一個挑選資料庫的下拉盒,選 擇 juddi 這個資料庫。
接著將檔案 juddi_mssql.ddl 的內容貼到 Query Analyzer 視窗裡的 SQL 指令面板,然後執行即可(點擊工具列上的綠色三角形圖示),執行時若有錯誤,將會顯示在下方面板當中。
上述動作完成後,再執行下面的 SQL 命令:
INSERT INTO PUBLISHER (PUBLISHER_ID, PUBLISHER_NAME, ADMIN) VALUES ('juddi', 'Juddi user', 'false');
2.7 驗證安裝
現在你已經完成所有的安裝程序了,可以再瀏覽網址 http://127.0.0.1:8080/juddi/happyjuddi.jsp 來驗證看看是否成功,成功的話,驗證結果應該看不到紅色的訊息。
补充:jUDDI+Tomcat+MySQL:
到 MySQL 網站下載 JDBC http://www.mysql.com/downloads/api-jdbc-stable.html,將mysql-connector-java-[版本編號]-stable-bin.jar置於 %CATALINA_HOME%\common\lib 資料夾下。
在 server.xml 中加入<DefaultContext reloadable="true" crossContext="true"> <Resource name="jdbc/juddiDB" scope="Shareable" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/juddiDB"> <parameter> <name>url</name> <value> jdbc:mysql://localhost:3306/jUDDI?autoReconnect=true;DatabaseName=juddi;user=juddi;password=password </value> </parameter> <parameter> <name>driverClassName</name> <value>org.gjt.mm.mysql.Driver</value> </parameter> </ResourceParams> </DefaultContext>這裡存取 MySQL 資料庫的 user ID 是 "juddi",密碼是 "password",因此你必須事先在 MySQL 中建立這個 user 帳號。
-----------------------------------------------
另,根据以上指南,写一个简明的:
jdk1.5.0+tomcat5.0.30+mysql5.0.13
1.下载mysql-5.0.13-rc-win32.zip解压后安装到C:\Program Files\MySQL\MySQL Server 5.0。
2.安装JDK1.5。
3.安装Tomcat5.0.30。
4.下载juddi-0.9rc4.zip,解压后将juddi.war复制到..\tomcat\webapps\下.
5.从http://www.mysql.com/downloads/api-jdbc-stable.html, 下载mysql-connector-java-3.0.17-ga.zip,解压后将mysql-connector-java-3.0.17-ga- bin.jar复制到../tomcat/common/lib/下(并添加到环境变量)../tomcat/webapps/juddi/WEB- INF/lib.
6.修改../tomcat/conf/server.xml在</Host>后添加如下:
<DefaultContext reloadable="true" crossContext="true">
<Resource name="jdbc/juddiDB" scope="Shareable" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/juddiDB">
<parameter>
<name>username</name>
<value>myy</value>
</parameter>
<parameter>
<name>password</name>
<value>123456</value>
</parameter>
<parameter>
<name>url</name>
<value>
jdbc:mysql://localhost/javatest
</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
</ResourceParams>
</DefaultContext>
7.打开mysql,以root身份登陆,并建立用户(注意用户一定要建立),数据库及表格如下:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myy'@'localhost'
-> IDENTIFIED BY '123456' WITH GRANT OPTION;
//我的用户名是myy,密码:123456
mysql> create database javatest;
Query OK, 1 row affected (0.02 sec)
mysql> use juddi;
Database changed
mysql> CREATE TABLE PUBLISHER
-> (
-> PUBLISHER_ID VARCHAR(20) NOT NULL,
-> PUBLISHER_NAME VARCHAR(255) NOT NULL,
-> LAST_NAME VARCHAR(150) NULL,
-> FIRST_NAME VARCHAR(100) NULL,
-> MIDDLE_INIT VARCHAR(5) NULL,
-> WORK_PHONE VARCHAR(50) NULL,
-> MOBILE_PHONE VARCHAR(50) NULL,
-> PAGER VARCHAR(50) NULL,
-> EMAIL_ADDRESS VARCHAR(255) NULL,
-> ADMIN VARCHAR(5) NULL,
-> ENABLED VARCHAR(5) NULL,
-> PRIMARY KEY (PUBLISHER_ID)
-> );
Query OK, 0 rows affected (0.13 sec)
mysql> INSERT INTO PUBLISHER (PUBLISHER_ID, PUBLISHER_NAME, ADMIN) valueS ('ju
i', 'Juddi user', 'false');
Query OK, 1 row affected (0.05 sec)
8.重新启动tomcat.
9、用http://127.0.0.1:8080/juddi/happyjuddi.jsp页面检验对错
注意:
tomcat的版本很重要,我刚开始时使用的是tomcat5.5.9,无论如何都配置不好,而且错误从来都不变,后来发现tomcat5.5.9和conf目录中的内容和tomcat5.0.30不一样,指示其配置信息无法加载.
-----------------------------------------------
附:tomcat5.0.30和5.5.25连接池配置区别
以下文件均在{tomcat}\conf\Catalina\localhost中配置:
这是在5.0.30中配置得test.xml:
<Context docBase="test" path="/test">
<Resource name="TestDataSource" type="javax.sql.DataSource"/>
<ResourceParams name="TestDataSource">
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@localhost:1521:oracle</value>
</parameter>
<parameter>
<name>password</name>
<value>password</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.OracleDriver</value>
</parameter>
<parameter>
<name>username</name>
<value>username</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>50</value>
</parameter>
</ResourceParams>
</Context>
这是在5.5.25中配置得test.xml:
<Context docBase="test" path="/test" debug="0" reloadable="true">
<Resource
name="TestDataSource"
type="javax.sql.DataSource"
password="password"
driverClassName="oracle.jdbc.OracleDriver"
maxIdle="2"
maxWait="5000"
username="username"
url="jdbc:oracle:thin:@localhost:1521:oracle"
maxActive="4"/>
</Context>
如果在连接数据库时提示connect url为""或null,根据版本改成上面的就可以了.