一、簡(jiǎn)介 IBM 發(fā)布的 uddi4j是UDDI的java實(shí)現(xiàn),它包含發(fā)布、查找、取消web服務(wù)的API。而juddi是apache組織的一個(gè)開(kāi)源項(xiàng)目,它部署在tomcat等服務(wù)器上是UDDI的服務(wù)器。 本文的主要內(nèi)容: 1. 利用uddi4j 的API創(chuàng)建web服務(wù); 2. 將創(chuàng)建好的web服務(wù)發(fā)布到j(luò)uddi的服務(wù)器上; 3. 在juddi服務(wù)器上查詢web服務(wù)。
二、 運(yùn)行環(huán)境 環(huán)境:winxp + jdk1.6 + tomcat6.0 + mysql5.0 + juddi-2.0rc5 + uddi4j-2.0.5(各種產(chǎn)品的版本沒(méi)有太大影響)
三、安裝與配置juddi 1. 下載juddi-2.0rc5.zip(官方網(wǎng)址:http://ws.apache.org/juddi/releases.html),解壓后將juddi-2.0rc5\webapp\juddi拷貝到tomcat的webapp目錄下。 2. 確保mysql正確安裝,將mysql的jdbc驅(qū)動(dòng)程序拷貝到tomcat的common\lib下,我這里用到的是mysqldriver.jar。 3. 修改tomcat/conf/server.xml在</Host>后添加如下:
其中:username和password是mysql數(shù)據(jù)庫(kù)的用戶名和密碼,url為數(shù)據(jù)庫(kù)的url,driverClassName是mysql的JDBC驅(qū)動(dòng)程序,如果所用到的數(shù)據(jù)庫(kù)版本或是驅(qū)動(dòng)程序版本不同這里也要變化。 4. 新建juddi用到的數(shù)據(jù)庫(kù),并插入數(shù)據(jù),具體就是執(zhí)行\(zhòng)juddi-2.0rc5\sql\mysql文件夾中的兩個(gè)sql文件:create_database.sql、insert_publishers.sql,前一個(gè)sql文件可以直接執(zhí)行,將創(chuàng)建數(shù)據(jù)庫(kù)juddi,后一個(gè)sql文件要修改成如下: USE juddi; -- *** SAMPLE PUBLISHER *** INSERT INTO PUBLISHER (PUBLISHER_ID,PUBLISHER_NAME,EMAIL_ADDRESS,IS_ENABLED,IS_ADMIN) VALUES ('juddi','juddi','juddi@apache.org','true','true'); 這樣就插入到表publisher中一條數(shù)據(jù),就是一個(gè)用戶,用戶名:juddi,密碼:juddi,我們?cè)趗ddi4j中將用這個(gè)用戶來(lái)創(chuàng)建web服務(wù)。 5. 驗(yàn)證安裝是否成功。重啟tomcat,訪問(wèn)http://localhost:8080/juddi/happyjuddi.jsp,如果jUDDI DataSource Validation段如下面的效果而沒(méi)有用紅色字體報(bào)錯(cuò)則說(shuō)明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
四、運(yùn)行uddi4j的示例程序創(chuàng)建、發(fā)布、查找web服務(wù) 1. 下載uddi4j-bin-2.0.5.zip. 2. 建立一個(gè)工程 名為uddi4jDemo,引入包uddi4j.jar , soap.jar,activation.jar,mail.jar。 把uddi4j sample里面的 samples.prop configurator.java SaveBusinessExample.java FindBusinessExample.java publisherAssertionExample.java 放在工程默認(rèn)package下 3. 打開(kāi)samples.prop這個(gè)文件 修改設(shè)置下參數(shù) 設(shè)置url inquiryURL = http://localhost:8080/juddi/inquiry publishURL = http://localhost:8080/juddi/publish 設(shè)置 userid = juddi password = juddi 設(shè)置soap transport 默認(rèn)就是這個(gè) TransportClassName=org.uddi4j.transport.ApacheSOAPTransport 4. 運(yùn)行結(jié)果 運(yùn)行 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
運(yùn)行FindBusinessExample.java *********** Running FindBusinessExample *********** Sample Business