一路拾遗
Collect By Finding All The Way ......
posts - 81,comments - 41,trackbacks - 0

 一、简介
IBM 发布的 uddi4j是UDDI的java实现,它包含发布、查找、取消web服务的API。而juddi是apache组织的一个开源项目,它部署在tomcat等服务器上是UDDI的服务器。
本文的主要内容:
1. 利用uddi4j 的API创建web服务;
2. 将创建好的web服务发布到juddi的服务器上;
3. 在juddi服务器上查询web服务。

二、 运行环境
环境:winxp + jdk1.6 + tomcat6.0 + mysql5.0 + juddi-2.0rc5 + uddi4j-2.0.5(各种产品的版本没有太大影响)

三、安装与配置juddi
1. 下载juddi-2.0rc5.zip(官方网址:http://ws.apache.org/juddi/releases.html),解压后将juddi-2.0rc5\webapp\juddi拷贝到tomcat的webapp目录下。
2. 确保mysql正确安装,将mysql的jdbc驱动程序拷贝到tomcat的common\lib下,我这里用到的是mysqldriver.jar。
3. 修改tomcat/conf/server.xml在</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>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-2.0rc5\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','juddi@apache.org','true','true');
这样就插入到表publisher中一条数据,就是一个用户,用户名:juddi,密码:juddi,我们在uddi4j中将用这个用户来创建web服务。
5. 验证安装是否成功。重启tomcat,访问http://localhost:8080/juddi/happyjuddi.jsp,如果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

四、运行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 = http://localhost:8080/juddi/inquiry
publishURL = http://localhost:8080/juddi/publish
设置
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

posted on 2008-08-15 16:38 胖胖泡泡 阅读(2185) 评论(10)  编辑  收藏

FeedBack:
# re: 使用UDDI4J连接JUDDI
2008-12-16 10:03 | lilin138000
你好,我运行时有这个问题:
import com.hp.soap.client.SoapClient;
import com.hp.soap.client.ClientMessage;
import com.hp.soap.client.SoapBody;
import com.hp.soap.client.SoapException;
import com.hp.soap.xml.XMLUtil;

难道是要用hp的包吗,请指教,   回复  更多评论
  
# re: 使用UDDI4J连接JUDDI
2008-12-16 18:25 | 胖胖泡泡
添加这个包 soap.jar  回复  更多评论
  
# re: 使用UDDI4J连接JUDDI
2008-12-16 23:08 | lilin138000
可是soap.jar我已经加了还是不行,是不是别的原因  回复  更多评论
  
# re: 使用UDDI4J连接JUDDI
2008-12-17 09:57 | 胖胖泡泡
引入包uddi4j.jar , soap.jar,activation.jar,mail.jar  回复  更多评论
  
# re: 使用UDDI4J连接JUDDI
2009-03-10 16:12 | zhxiaomiao
我都弄了一天了 楼主我的问题好多啊 我用tomcat6配置 就这样 死活不行 报
DB connection was not aquired. (Cannot create JDBC driver of class '' for connect URL 'null')

- SELECT COUNT(*) FROM PUBLISHER failed (null)
没办法下 我只能下载带着tomcat的 juddi-tomcat-2.0rc6.zip这样可以 我把这个的server文件配置都和tomcat6.0的一样都不行 不知道什么原因
还有我运行SaveBusinessExample.java 例子时报错:(用的包都有了)
*********** Running SaveBusinessExample ***********

Get authtoken
Fault string, and possibly fault code, not set
at org.uddi4j.UDDIElement.<init>(UDDIElement.java:40)
at org.uddi4j.response.AuthToken.<init>(AuthToken.java:85)
at org.uddi4j.client.UDDIProxy.get_authToken(UDDIProxy.java:1626)
at SaveBusinessExample.run(SaveBusinessExample.java:72)
at SaveBusinessExample.main(SaveBusinessExample.java:50)

楼主 我的QQ 273507550 希望你能帮助我 看一下 谢谢  回复  更多评论
  
# re: 使用UDDI4J连接JUDDI
2010-04-01 16:14 | sjx
@lilin138000
我用的apache的soap.jar包,测试成功,你可以试试,下载地址:http://mirrors.ibiblio.org/pub/mirrors/maven2/soap/soap/2.3.1/soap-2.3.1.jar  回复  更多评论
  
# re: 使用UDDI4J连接JUDDI
2010-04-30 11:27 | happy
楼主你好,我遇到了下面问题,请您帮我解答一下,谢谢了
*********** Running PublisherAssertionExample ***********

Get authtoken
Fault string, and possibly fault code, not set
at org.uddi4j.UDDIElement.<init>(UDDIElement.java:40)
at org.uddi4j.response.AuthToken.<init>(AuthToken.java:85)
at org.uddi4j.client.UDDIProxy.get_authToken(UDDIProxy.java:1626)
at PublisherAssertionExample.run(PublisherAssertionExample.java:79)
at PublisherAssertionExample.main(PublisherAssertionExample.java:57)  回复  更多评论
  
# re: 使用UDDI4J连接JUDDI
2010-05-04 16:51 | happy
问题解决了,原来自己建表时出错了,只建立了publisher表,而没有建立其它表,重新运行create_database.sql及insert_publisher.sql后问题解决了!  回复  更多评论
  
# re: 使用UDDI4J连接JUDDI
2010-09-28 22:42 | Wordsworth
我是菜鸟,刚刚接触。请问,我运行SaveBusinessExample.java的时候出现下面的错误

*********** Running FindBusinessExample ***********
Exception in thread "main" java.lang.NullPointerException
at org.uddi4j.client.UDDIProxy.setConfiguration(UDDIProxy.java:234)
at org.uddi4j.client.UDDIProxy.<init>(UDDIProxy.java:129)
at FindBusinessExample.run(FindBusinessExample.java:54)
at FindBusinessExample.main(FindBusinessExample.java:44)

请问是什么问题啊。谢谢  回复  更多评论
  
# re: 使用UDDI4J连接JUDDI
2010-09-28 22:44 | Wordsworth
不好意思,刚才错误复制错了,下面是错误内容

*********** Running SaveBusinessExample ***********
Exception in thread "main" java.lang.NullPointerException
at org.uddi4j.client.UDDIProxy.setConfiguration(UDDIProxy.java:234)
at org.uddi4j.client.UDDIProxy.<init>(UDDIProxy.java:129)
at SaveBusinessExample.run(SaveBusinessExample.java:60)
at SaveBusinessExample.main(SaveBusinessExample.java:50)
  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: