真正是被juddiv3折腾的够呛啊,好不容易连上数据库,结果登录进去后juddi的页面还不显示,结果,竟然是在配置文件里面少放了一个文件,网上找了半天没找着,还是我自己试出来的啊。。。抓狂了,把这段心酸苦逼的历程记录一下
参考文章:http://endual.iteye.com/blog/1142985 &&http://blog.staven.mobi/?p=380
准备工作:
- juddi-portal-bundle-3.0.0.zip 下载地址:http://jarvana.com/jarvana/archive-details/org/apache/juddi/juddi-portal-bundle/3.0.0/juddi-portal-bundle-3.0.0.zip 。我这里用的是v3.0.0 一开始想用v3.0.4版的,这一版的默认是用openjpa做持久层,连接mysql数据库的时候总是连接不上,于是换成据说稳定的hibernate做持久层的v3.0.0版,果然能连接上数据库。
- mysql-5.5.25a-win32.zip 下载地址:http://www.mysql.com/downloads/mysql/。我这里用的是免安装版本的,可能是我的数据库安装出现问题,使用安装版的时候总是提示接口冲突,我还不想换成别的端口号,于是就下了个免安装版本的,可以使用了。环境变量的path中加入D:\mysql-5.5.25a-win32\bin;,就可以直接在命令窗口中启动mysql(D:\mysql-5.5.25a-win32为我的mysql解压的位置,因为是免安装的)
- apache-tomcat-6.0.10.exe 这个就不用说了,相信都已经安装过了,环境变量配置清楚,要不会出现问题。我的电脑->属性->高级->环境变量->系统变量。添加CATALINA_HOME=CATALINA_BASE=TOMCAT_HOME=“tomcat的安装目录”,classpath中加入变量值%CATALINA_HOME%\lib\servlet-api.jar; ,path中加入变量值%CATALINA_HOME%\bin;
- jdk-6u10-rc-bin-b28-windows-i586-p-21_jul_2008.exe 这个就更不用说了,还是说一下环境变量。JAVA_HOME="C:\Program Files\Java\jdk1.6.0_10"(我的安装目录),classpath中加入变量值.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(前面的点要加上),path中加入变量值%JAVA_HOME%\jre\bin;%JAVA_HOME%\bin;
1. 首先进行数据库的准备
- 启动数据库 mysqld --console,mysql启动成功,在进行操作的时候这个页面不要关,不然会发生错误。
- 新打开一个命令行窗口。进入数据库 mysql -uroot -p123456(这里输入自己的用户名和密码),可以再创建一个新用户create user juddi@localhost identified by "juddi"
- 新建数据库 create database juddiv3; 这个数据库就暂放着,一会进行连接的时候就会将juddiv3自带的表传进去了,之前我试过juddi-0.9rc4的时候,他是有一个数据库文件让你自己导,juddiv3就不需要,连接后启动tomcat就能将数据表导入。
2. 在tomcat上部署juddiv3
- juddi-portal-bundle-3.0.0.zip解压,将webapps中的juddiv3, pluto,uddi-portlets这三个文件包拷贝到tomcat安装路径下的webapps中,我的路径为C:\Program Files\Tomcat 6.0\webapps。
- 将juddi-portal-bundle-3.0.0目录下的lib中的包拷贝到tomcat路径下的lib中,我的路径为C:\Program Files\Tomcat 6.0\lib。
- 进入C:\Program Files\Tomcat 6.0\webapps\juddiv3\META-INF,打开其中的context.xml,编辑如下:
<?xml version="1.0" encoding="UTF-8"?> <Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- --> <Resource name="jdbc/juddiDB" auth="Container" type="javax.sql.DataSource" username="juddi" password="juddi" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/juddiv3" maxActive="8" /> </Context>
- context.xml中的resource name "juddiDB"需要和以下文件中的某些字段匹配:
- C:\Program Files\Tomcat 6.0\webapps\juddiv3\WEB-INF\web.xml 中<res-ref-name>值设置为jdbc/juddiDB
- C:\Program Files\Tomcat 6.0\webapps\juddiv3\WEB-INF\classes\juddiv3.properties 中的juddi.persistenceunit.name设置为juddiDB。
- C:\Program Files\Tomcat 6.0\webapps\juddiv3\WEB-INF\classes\META-INF\persistence.xml 中的persistence-unit 的name属性设置为为juddiDB。<jta-data-source>设置为java:comp/env/jdbc/juddiDB。并确保persistence.xml中的有 <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>。
- C:\Program Files\Tomcat 6.0\webapps\uddi-portlets\WEB-INF\classes目录下也有一个juddiv3.properties文件,同样,将juddi.persistenceunit.name设置为juddiDB。
- C:\Program Files\Tomcat 6.0\webapps\uddi-portlets\WEB-INF\classes\META-INF目录中有两个文件uddi.xml和uddi.xml.sales,替换成如下文件:
uddi.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<uddi>
<reloadDelay>5000</reloadDelay>
<manager name="uddi-portlet-manager">
<nodes>
<node isHomeJUDDI="true">
<name>default-ws</name>
<properties>
<property name="serverName" value="localhost"/>
<property name="serverPort" value="8080"/>
<property name="rmiPort" value="1099"/>
</properties>
<description>Main jUDDI node</description>
<!-- JAX-WS Transport -->
<proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
<custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer?wsdl</custodyTransferUrl>
<inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry?wsdl</inquiryUrl>
<publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish?wsdl</publishUrl>
<securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security?wsdl</securityUrl>
<subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription?wsdl</subscriptionUrl>
<subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener?wsdl</subscriptionListenerUrl>
<juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api?wsdl</juddiApiUrl>
<!-- In VM Transport Settings
<proxyTransport>org.apache.juddi.v3.client.transport.InVMTransport</proxyTransport>
<custodyTransferUrl>org.apache.juddi.api.impl.UDDICustodyTransferImpl</custodyTransferUrl>
<inquiryUrl>org.apache.juddi.api.impl.UDDIInquiryImpl</inquiryUrl>
<publishUrl>org.apache.juddi.api.impl.UDDIPublicationImpl</publishUrl>
<securityUrl>org.apache.juddi.api.impl.UDDISecurityImpl</securityUrl>
<subscriptionUrl>org.apache.juddi.api.impl.UDDISubscriptionImpl</subscriptionUrl>
<subscriptionListenerUrl>org.apache.juddi.api.impl.UDDISubscriptionListenerImpl</subscriptionListenerUrl>
<juddiApiUrl>org.apache.juddi.api.impl.JUDDIApiImpl</juddiApiUrl>
-->
<!-- RMI Transport Settings
<proxyTransport>org.apache.juddi.v3.client.transport.RMITransport</proxyTransport>
<custodyTransferUrl>/juddiv3/UDDICustodyTransferService</custodyTransferUrl>
<inquiryUrl>/juddiv3/UDDIInquiryService</inquiryUrl>
<publishUrl>/juddiv3/UDDIPublicationService</publishUrl>
<securityUrl>/juddiv3/UDDISecurityService</securityUrl>
<subscriptionUrl>/juddiv3/UDDISubscriptionService</subscriptionUrl>
<subscriptionListenerUrl>/juddiv3/UDDISubscriptionListenerService</subscriptionListenerUrl>
<juddiApiUrl>/juddiv3/JUDDIApiService</juddiApiUrl>
<javaNamingFactoryInitial>org.jnp.interfaces.NamingContextFactory</javaNamingFactoryInitial>
<javaNamingFactoryUrlPkgs>org.jboss.naming</javaNamingFactoryUrlPkgs>
<javaNamingProviderUrl>jnp://${serverName}:${rmiPort}</javaNamingProviderUrl>
-->
</node>
</nodes>
<clerks registerOnStartup="false">
<clerk name="MarketingCratchit" node="default-ws" publisher="marketing" password="marketing"/>
</clerks>
</manager>
</uddi>
uddi.xml.sales
<?xml version="1.0" encoding="ISO-8859-1" ?>
<uddi>
<reloadDelay>5000</reloadDelay>
<manager name="uddi-portlet-manager">
<nodes>
<node isHomeJUDDI="true">
<name>default-ws</name>
<properties>
<property name="serverName" value="sales"/>
<property name="serverPort" value="8080"/>
<property name="rmiPort" value="1099"/>
</properties>
<description>Main jUDDI node</description>
<!-- JAX-WS Transport -->
<proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
<custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer?wsdl</custodyTransferUrl>
<inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry?wsdl</inquiryUrl>
<publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish?wsdl</publishUrl>
<securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security?wsdl</securityUrl>
<subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription?wsdl</subscriptionUrl>
<subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener?wsdl</subscriptionListenerUrl>
<juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api?wsdl</juddiApiUrl>
</node>
<node>
<name>marketing-ws</name>
<properties>
<property name="serverName" value="marketing"/>
<property name="serverPort" value="8080"/>
</properties>
<description>jUDDI node in other Department</description>
<proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
<custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer?wsdl</custodyTransferUrl>
<inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry?wsdl</inquiryUrl>
<publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish?wsdl</publishUrl>
<securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security?wsdl</securityUrl>
<subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription?wsdl</subscriptionUrl>
<subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener?wsdl</subscriptionListenerUrl>
<juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api?wsdl</juddiApiUrl>
</node>
</nodes>
<clerks registerOnStartup="true">
<clerk name="SalesCratchit" node="default-ws" publisher="sales" password="sales"/>
<clerk name="MarketingCratchit" node="marketing-ws" publisher="sales" password="sales"/>
</clerks>
</manager>
</uddi>
在该目录下再添加一个uddi.xml.marketing
<?xml version="1.0" encoding="ISO-8859-1" ?>
<uddi>
<reloadDelay>5000</reloadDelay>
<manager name="uddi-portlet-manager">
<nodes>
<node isHomeJUDDI="true">
<name>default-ws</name>
<properties>
<property name="serverName" value="marketing"/>
<property name="serverPort" value="8080"/>
<property name="rmiPort" value="1099"/>
</properties>
<description>Main jUDDI node</description>
<!-- JAX-WS Transport -->
<proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
<custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer?wsdl</custodyTransferUrl>
<inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry?wsdl</inquiryUrl>
<publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish?wsdl</publishUrl>
<securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security?wsdl</securityUrl>
<subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription?wsdl</subscriptionUrl>
<subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener?wsdl</subscriptionListenerUrl>
<juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api?wsdl</juddiApiUrl>
</node>
<node>
<name>sales-ws</name>
<properties>
<property name="serverName" value="sales"/>
<property name="serverPort" value="8080"/>
</properties>
<description>jUDDI node in other Department</description>
<proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
<custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer?wsdl</custodyTransferUrl>
<inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry?wsdl</inquiryUrl>
<publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish?wsdl</publishUrl>
<securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security?wsdl</securityUrl>
<subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription?wsdl</subscriptionUrl>
<subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener?wsdl</subscriptionListenerUrl>
<juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api?wsdl</juddiApiUrl>
</node>
</nodes>
<clerks registerOnStartup="true">
<clerk name="MarketingCratchit" node="default-ws" publisher="marketing" password="marketing"/>
<clerk name="SalesCratchit" node="sales-ws" publisher="marketing" password="marketing"/>
</clerks>
</manager>
</uddi>
- 打开C:\Program Files\Tomcat 6.0\conf目录下的tomcat-users.xml,添加tomcat的用户名和密码,编辑如下:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager"/>
<role rolename="tomcat"/>
<role rolename="pluto"/>
<user username="tomcat" password="tomcat" roles="manager"/>
<user username="marketing" password="marketing" roles="pluto,tomcat,manager"/>
<user username="root" password="root" roles="pluto,tomcat,manager"/>
<user username="sales" password="sales" roles="pluto,tomcat,manager"/>
<user username="uddi" password="uddi" roles="pluto,tomcat,manager"/>
</tomcat-users>
- 打开C:\Program Files\Tomcat 6.0\conf目录下的context.xml,编辑如下:
<!-- The contents of this file will be loaded for each web application -->
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/juddiDB" auth="Container"
type="javax.sql.DataSource" username="juddi" password="juddi"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/juddiv3"
maxActive="8"/>
</Context>
3.重新启动tomcat,键入http://localhost:8080/juddiv3/,出现juddiv3的欢迎界面
点击JUDDI Portal,输入默认用户名root和密码root,这样就进入juddi的门户网站,这里出现了一个问题,也是纠结了我很久的问题,无法看到juddi下的页面显示,也就是往juddi中注册的服务列表看不到!!这不就成了个摆设了!!不过终于被我解决了~~
打开C:\Program Files\Tomcat 6.0\conf的目录,发现多了一个Catalina文件包,进入C:\Program Files\Tomcat 6.0\conf\Catalina\localhost,问题就出在这里面,这里面缺少一个配置文件,以至于juddiv3无法访问uddi-portlets中的东东,打开juddi-portal-bundle-3.0.0目录下的conf,,发现其中也有一个Catalina文件包,打开,打开,里面有一个pluto.xml文件,将它复制到C:\Program Files\Tomcat 6.0\conf\Catalina\localhost路径下,再重启tomcat,试试看~~好用啦!!这是我的界面,应该是只有第一个节点,下面是我自己练习时添加的,无视掉~~
4.这样就在tomcat上部署了juddiv3~~数据库也已经悄悄的传过去了~~现在看看表信息吧~~
我是直接用navicat连接mysql看的,也可以进入命令行窗口进行查看。
进入命令行窗口,键入,>mysql -ujuddi -pjuddi(这是之前新建的用户),>show databases;,>use juddiv3;,>show tables;,将能看到juddi的表了
5.大功告成~~撒花