今天终于用Derby,Tomcat,Juddi和Eclipse来构建UDDI Repository,其实没有导师一定要用嵌入式的数据库的要求,我用MySQL和Tomcat等构件的Repository已经运行得很好了,而且我觉得MySQL比较好操作,不像Derby那样要对SQL语言比较熟悉才比较好。
1. Derby Plugin是嵌入在Eclipse里面的,启动和构建还是比较方便的,只要把几个相关的Jar文件放到Eclipse的Plugins目录下就可以了,等Eclipse识别了之后,我们就可以给所有的Eclipse中项目建立一个或者多个数据库,默认的数据库是存储在Project下面的(下面第二条命令)。当然我们也可以说明我们的数据库的地址(下面第一条命令)。
建立数据库的命令是:
- connect 'jdbc:derby:F:\myRepository\DerbyDatabase\juddi;create=true';
- connect 'jdbc:derby:juddi;create=true'
有了数据库之后我们当然要建立库里面表格,我们可以一个表一个表建立,在ij命令符下面,也可以通过SQL文件,一次建立好几个表,往表里存数据也有这么两种方式。
2. 要建立UDDI Repository的话,一定要用到JUDDI,这个可以下载到,从apache官方网站上下载juddi-0.9rc4.zip,解压后将juddi.war和文件夹juddi复制到..\tomcat\webapps\下。在sql文件夹内找到mysql文件夹,将里面的create_database.sql , insert_publishers.sql 两个脚本修改一下添加到Derby中去,一个是建立表格一个是申请权限的。
3. 把derby.jar,activation.jar,soap.jar 等Jar包放到..\tomcat\common\lib和你的项目...\WEB-INF\lib下
4. 配置Tomcat:
- Server.xml的修改推荐使用Tomcat的Admin组件完成,完全图形化配置,相当容易。或者按下面的写法 在<GlobalNamingResources></GlobalNamingResources>之间写如下配置(仅供参 考,各位用的时候,请改成自己数据库的配置):
<Resource
name="jdbc/juddiDB"
type="javax.sql.DataSource"
password="juddi"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
maxIdle="2"
maxWait="5000"
username="juddi"
url="jdbc:derby:F:/myRepository/DerbyDatabase/juddi"
maxActive="4"/>
- 然后,在Tomcat安装目录下/conf/Catalina/localhost文件夹中建立一个和你网站文件夹名字一样的XML文件。例如:TestSourse.xml。内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
name="jdbc/juddiDB"
type="javax.sql.DataSource"
password="juddi"
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
maxIdle="2"
maxWait="5000"
username="juddi"
url="jdbc:derby:F:/myRepository/DerbyDatabase/juddi"
maxActive="4"/>
</Context>
其实就是把Server.xml的内容再重复一遍。这一步非常重要,如果没有这步就会出错,会出现 org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class ''
for connect URL 'null'错误。
- 最后,在你自己网站的/WEB-INF/web.xml文件中,添加一下代码(参考):
<resource-ref>
<description>jUDDI DataSource</description>
<res-ref-name>jdbc/juddiDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
OK。配置全部完成。
启动Tomcat,浏览器中输入http://localhost:8080/juddi 则可以看到index页面,点击"validate"页面出现配置信息,可以看到配置是否正确的信息。如果没有错误,则表明安装成功。
在用UDDI4J的例子可以检验Repository有没有建好。
由于嵌入式的Derby只能够支持一个应用程序访问,虽然可以是多线程 的,但是还是不能够满足我的要求,所以我只能用一般的Derby,配置过程和嵌入式的没有什么区别,就是要把derbyclient.jar和derbyNet.jar放到环境变量中。
一切大功告成。
下一步就是要让我的UDDI repository支持语义技术。