有現成的配置資料,但在配置過程中還是出現了好多問題,這裏把自己的配置過程詳細記錄一下:
原來的文檔,大部分都是正確的,關鍵是java版本和Tomcat的版本問題。
原文加上我自己的改動:
一、簡介
IBM 發佈的 uddi4j是UDDI的java實現,它包含發佈、查找、取消web服務的API。而juddi是apache組織的一個開源項目,它部署在tomcat等服務器上是UDDI的服務器。
本文的主要內容:
1. 利用uddi4j 的API創建web服務;
2. 將創建好的web服務發佈到juddi的服務器上;
3. 在juddi服務器上查詢web服務。
二、 我的環境
環境:win xp + jdk1.5.0 + tomcat5.0.30 + mysql4.1.22 + juddi-0.9rc4 + uddi4j-2.0.5 + xalan-j_2_7_0
IBM 發佈的 uddi4j是UDDI的java實現,它包含發佈、查找、取消web服務的API。而juddi是apache組織的一個開源項目,它部署在tomcat等服務器上是UDDI的服務器。
本文的主要內容:
1. 利用uddi4j 的API創建web服務;
2. 將創建好的web服務發佈到juddi的服務器上;
3. 在juddi服務器上查詢web服務。
二、 我的環境
環境:win xp + jdk1.5.0 + tomcat5.0.30 + mysql4.1.22 + juddi-0.9rc4 + uddi4j-2.0.5 + xalan-j_2_7_0
注:最好按照所給版本,不然有的jar包會衝突,我第一次照着網上給的配置就總是jar包衝突。尤其是jdk版本和tomcat的版本(還有關於xml解析的兩個jar包)。
三、安裝與配置juddi
1. 下載juddi-0.9rc4.zip(官方網址:[url]http://ws.apache.org/juddi/releases.html[/url] ),解壓後將juddi-0.9rc4\webapp\juddi拷貝到tomcat的webapp目錄下。
2. 確保mysql正確安裝,將mysql的jdbc驅動程序拷貝到tomcat的common\lib下,我這裏用到的是mysql-connector-java-5.1.5-bin.jar。可以到mysql的官網上下。
3. 修改tomcat/conf/server.xml在後添加如下:
<DefaultContext reloadable="true" crossContext="true">
<Resource name="jdbc/juddiDB" scope="Shareable" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/juddiDB">
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>123456</value>
</parameter>
<parameter>
<name>url</name>
<value>
jdbc:mysql://localhost/juddi
</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
</ResourceParams>
</DefaultContext>
三、安裝與配置juddi
1. 下載juddi-0.9rc4.zip(官方網址:[url]http://ws.apache.org/juddi/releases.html[/url] ),解壓後將juddi-0.9rc4\webapp\juddi拷貝到tomcat的webapp目錄下。
2. 確保mysql正確安裝,將mysql的jdbc驅動程序拷貝到tomcat的common\lib下,我這裏用到的是mysql-connector-java-5.1.5-bin.jar。可以到mysql的官網上下。
3. 修改tomcat/conf/server.xml在後添加如下:
<DefaultContext reloadable="true" crossContext="true">
<Resource name="jdbc/juddiDB" scope="Shareable" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/juddiDB">
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>123456</value>
</parameter>
<parameter>
<name>url</name>
<value>
jdbc:mysql://localhost/juddi
</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
</ResourceParams>
</DefaultContext>
其中:username和password是mysql數據庫的用戶名和密碼,url爲數據庫的url,driverClassName是mysql的JDBC驅動程序,如果所用到的數據庫版本或是驅動程序版本不同這裏也要變化。
4. 新建juddi用到的數據庫,並插入數據,具體就是執行\juddi-0.9rc4\sql\mysql文件夾中的兩個sql文件:create_database.sql、insert_publishers.sql,前一個sql文件可以直接執行,將創建數據庫juddi,後一個sql文件要修改成如下:
USE juddi;
-- *** SAMPLE PUBLISHER ***
INSERT INTO PUBLISHER (PUBLISHER_ID,PUBLISHER_NAME,EMAIL_ADDRESS,IS_ENABLED,IS_ADMIN) VALUES ('juddi','juddi','[email][email protected][/email]','true','true');
這樣就插入到表publisher中一條數據,就是一個用戶,用戶名:juddi,密碼:juddi,我們在uddi4j中將用這個用戶來創建web服務。
5. 驗證安裝是否成功。重啓tomcat,訪問[url]http://localhost:8080/juddi/happyjuddi.jsp[/url],如果jUDDI DataSource Validation段如下面的效果而沒有用紅色字體報錯則說明juddi部署成功。
jUDDI DataSource Validation
+ Got a JNDI Context!
+ Got a JDBC DataSource (dsname=java:comp/env/jdbc/juddiDB)
+ Got a JDBC Connection!
+ SELECT COUNT(*) FROM PUBLISHER = 1
4. 新建juddi用到的數據庫,並插入數據,具體就是執行\juddi-0.9rc4\sql\mysql文件夾中的兩個sql文件:create_database.sql、insert_publishers.sql,前一個sql文件可以直接執行,將創建數據庫juddi,後一個sql文件要修改成如下:
USE juddi;
-- *** SAMPLE PUBLISHER ***
INSERT INTO PUBLISHER (PUBLISHER_ID,PUBLISHER_NAME,EMAIL_ADDRESS,IS_ENABLED,IS_ADMIN) VALUES ('juddi','juddi','[email][email protected][/email]','true','true');
這樣就插入到表publisher中一條數據,就是一個用戶,用戶名:juddi,密碼:juddi,我們在uddi4j中將用這個用戶來創建web服務。
5. 驗證安裝是否成功。重啓tomcat,訪問[url]http://localhost:8080/juddi/happyjuddi.jsp[/url],如果jUDDI DataSource Validation段如下面的效果而沒有用紅色字體報錯則說明juddi部署成功。
jUDDI DataSource Validation
+ Got a JNDI Context!
+ Got a JDBC DataSource (dsname=java:comp/env/jdbc/juddiDB)
+ Got a JDBC Connection!
+ SELECT COUNT(*) FROM PUBLISHER = 1
注: 前三步基本都沒有問題,第四步很有可能會遇到問題。具體錯誤我給忘記了,記得是tomcat對於xml解析和jdk解析xml所用的類衝突,所以要把 tomcat解析xml的jar包替換一下:把tomcat\common\endorsed下的xercesImpl.jar和xml- apis.jar替換成xalan的jar包:我用的是xalan-j_2_7_0-bin.zip。可以到apache的官網上下。解壓後得到的四個 jar包:serializer.jar,xalan.jar和xercesImpl.jar和xml-apis.jar都放到了tomcat\ common\endorsed下面。
四、運行uddi4j的示例程序創建、發佈、查找web服務
1. 下載uddi4j-bin-2.0.5.zip
2. 建立一個工程 名爲uddi4jDemo,引入包uddi4j.jar , soap.jar,activation.jar,mail.jar。
把uddi4j sample裏面的 samples.prop configurator.java SaveBusinessExample.java FindBusinessExample.java publisherAssertionExample.java 放在工程默認package下
3. 打開samples.prop這個文件 修改設置下參數
設置url
inquiryURL = [url]http://localhost:8080/juddi/inquiry[/url]
publishURL = [url]http://localhost:8080/juddi/publish[/url]
設置
userid = juddi
password = juddi
設置soap transport 默認就是這個
TransportClassName=org.uddi4j.transport.ApacheSOAPTransport
4. 運行結果
運行 SaveBusinessExample.java
*********** Running SaveBusinessExample ***********
Get authtoken
Returned authToken:authToken:60BDF210-6641-11DB-A066-BC0BE7D6EEB5
Save 'Sample Business'
Returned businessKey:60DF35B0-6641-11DB-A066-A0B53CE33E0E
Listing businesses starting with S after we publish
Sample Business
運行FindBusinessExample.java
*********** Running FindBusinessExample ***********
Sample Business
上 面是人家給的例子的運行程序:我根據要求對給的實例稍加改動,便完成了老師的工作。老師要求做一個發佈服務和查詢服務的界面,但由於老師是在網格符合相結
合的需要使用一下輔助類來保存Qos參數,我們使用了CategoryBag和KeyedReference兩個類來存放輔助存放。具體代碼這裏先不給 了。主要是PublishBindingTemplate.java和FindBindingTemplate.java。