最近初学JUDDI,迷惑了一阵子,今天终于成功安装JUDDI,马上写了一个文档供大家分享。
OWL-S/UDDI matchmaker 和 普通JUDDI都需要在web服务器下部署一个juddi的应用文件夹,所以为了避免冲突,我们将OWL-S/UDDI matchmaker和普通JUDDI放在两个不同的服务器中跑。
1. OWL-S/UDDI matchmaker
它的安装只要查找一下其自带的帮助文档,就很容易安装成功,并可以做测试;
我采用tomcat-5.5.17 + mysql5.5。
安装成功后,在TomcatHome下的webapps文件夹下有一个juddi的文件夹,并且在mysql下自己建了新的数据库juddi;
下面就可以自己作应用了。
2. 普通UDDI
我采用Tomcat 5.0.30+mysql5.5 ,有人反映Tomcat 5.5版本和JUDDI有冲突。
1. 从mysql的官方网站上下载mysql-5.0.13-rc-win32.zip解压后安装到C:\Program Files\MySQL\MySQL Server 5.0.
2.从apache官方网站上下载juddi-0.9rc4.zip,解压后将juddi.war复制到..\tomcat\webapps\下,或者复制文件夹juddi到该目录下;.
3.从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.;另外,还需要加入三个比较重要的包到./tomcat/common/lib/下,分别是: mail.jar , activation.jar,tools.jar(该包可在%JAVA_HOME%\lib中找到),如果不行还可加入另外一个包xerces.jar。
下面就是关键步骤:
4进入juddi-0.9rc4\sql\mysql,(因为我是用mysql数据库的),里面有三个文件,先阅读README,按照readme中说明进行操作。
为了省时间,我把步骤写一下:
1) 打开mysql的命令行工具,以root用户进入,输入”\. {path}\create_database.sql”,该步骤默认的将会在你的数据库中创建一个juddi数据库,一般来说这是可以的,但是由于本人以前安装了语义的juddi,为了避免冲突,需要建立一个不同的数据库存储,因此可以在执行该步骤之前,先便起create_database.sql,将里面的juddi全部置换成你所想要的创建的数据库名字,同样在insert_publisher.sql也一起改一下;
2) 如果上一步成功,就执行这一步。先编辑insert_publisher.sql,把它改成如下:
USE ‘databaseName’;
-- INSERT INTO PUBLISHER (PUBLISHER_ID,PUBLISHER_NAME,EMAIL_ADDRESS,IS_ENABLED,IS_ADMIN) VALUES (‘juddi‘,‘juddi‘,‘
[email protected]‘,‘true‘,‘true‘);
其中上面打引号的内容都可以自行修改自己想要的名字;
同第一步,在mysql执行该文件,也可以逐条在mysql中输入执行。
3) 验证:查看数据库juddi,在表publisher中能看到第二步所设置的信息就说明数据创建成功。
5. 数据库连接:
进入%TOMCAT_HOME%\conf目录,编辑其中的server.xml文件。
一般来说,把下面的根元素DefaultContext加入到<Host></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>userName</value>
</parameter>
<parameter>
<name>password</name>
<value>password</value>
</parameter>
<parameter>
<name>url</name>
<value>
jdbc:mysql://localhost/juddiws
</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
</ResourceParams>
</DefaultContext>
其中,用户名juddi和密码juddi是连接数据库的密码,在下一步进行设置,jdbc:mysql://localhost/DataBaseName的DataBaseName就是刚才所创建的数据库名字。保存。
重启服务器。
6.为数据库连接授权:执行下面的sql命令:
INSERT INTO PUBLISHER (PUBLISHER_ID,PUBLISHER_NAME,EMAIL_ADDRESS,IS_ENABL
ED,IS_ADMIN) VALUES (‘userName‘,‘password‘,‘
[email protected]‘,‘true‘,‘true‘) ;
userName,password就是第5步中的用户名和密码。
7.至此,整个普通的JUDDI就已经安装完成。测试一下,进入http://localhost:8080/juddi/happyjuddi.jsp,如果没有出现红色字体就表示安装基本成功;
下面介绍使用JUDDI客户端对JUDDI进行测试:
一般是使用uddi的API UDDI4J作为客户端。
这里借用sijipeng在w3cchina分享的一个帖子,http://webservice.org.cn/dispbbs.asp?boardID=10&ID=39472
建立一个工程 名为uddi4jdemo
引入包uddi4j.jar , soap.jar(在http://www.apache.org/dyn/closer.cgi/ws/soap/ 下载)
把uddi4j sample里面的 samples.prop configurator.java SaveBusinessExample.java FindBusinessExample.java ,最好在工程的编译路径上再导入前面用的包:mail.jar , activation.jar,tools.jar。
publisherAssertionExample.java 放在工程默认package下
由于juddi刚装好没有插入user 因此 这里插入user (这一步在4步的第2小步已经作完,不必重复做)
INSERT INTO PUBLISHER (PUBLISHER_ID,PUBLISHER_NAME,EMAIL_ADDRESS,IS_ENABLED,IS_ADMIN)
VALUES (‘juddi‘,‘juddi‘,‘
[email protected]‘,‘true‘,‘true‘)
打开samples.prop这个文件 修改设置下参数
设置url
inquiryURL = http://localhost:8080/juddi/inquiry
publishURL = http://localhost:8080/juddi/publish
设置
userid = juddi ――――――刚才设置的或在第4步第2小步中设置的
password = juddi ――――――刚才设置的或在第4步第2小步中设置的
设置soap transport 默认就是这个
TransportClassName=org.uddi4j.transport.ApacheSOAPTransport
也可以使用axis,此时该值设置为org.uddi4j.transport.ApacheAxisTransport,不过添加的包就不是soap.jar,要去下载axis包。
运行结果
运行 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
Sample Business
Sample Business
运行FindBusinessExample.java
*********** Running FindBusinessExample ***********
Sample Business
Sample Business
Sample Business
文笔粗劣,时间紧迫,写得不好,请大家见谅!