以下https://docs.wso2.com/display/Governance460/Oracle+服务+巴士我正在尝试将Oracle Service Bus 12c(OSB)与WSO2 Governance Registry 4.6.0(G-Reg)集成。
我在OSB上添加了UDDI注册中心(greg-UDDI),然后我尝试向UDDI发布代理服务。我选择了一个代理服务,并选中了UDDI-"自动发布到注册表"复选框。
在我激活OSB上的会话后,wso2日志(wso2carbon.log)上写下了以下异常:
TID: [0] [Greg] [2015-07-01 11:44:36,260] INFO
{org.apache.cxf.phase.PhaseInterceptorChain} - Application
{urn:uddi-org:v3_service}UDDIInquiryService#{urn:uddi-
org:v3_service}get_serviceDetail has thrown exception, unwinding
now: org.apache.juddi.v3.error.InvalidKeyPassedException: The
business service was not found for the given key:
uddi:bea.com:servicebus:xxxx:yyyyyyy:sample
{org.apache.cxf.phase.PhaseInterceptorChain}
TID: [0] [Greg] [2015-07-01 11:44:36,442] INFO
{org.wso2.carbon.registry.juddi.util.UDDIGovernanceUtil} -
Service sample added Successfully.!
{org.wso2.carbon.registry.juddi.util.UDDIGovernanceUtil}
查看G-Reg管理控制台,proxys/wsdl列表中没有任何内容,只有Services列表中存在"sample",但没有任何有用的信息(也没有有效的url,也没有内容)。
怎么了?我必须做些什么才能在G-REG上发布wsdl?
jUDDI抱怨传入的密钥的密钥生成器tModel不存在。这是UDDI规范的一部分。如果您的服务密钥是'UDDI:bea.com:servicebus:xxxx:yyyyyyy:sample'
那么在发布之前,您需要具有以下密钥的tModel密钥生成器。它们也需要按照这个顺序创建。
- uddi:bea.com
- uddi:bea.com:servicebus
- uddi:bea.com:servicebus:xxxx
- uddi:bea.com:servicebus:xxxx:yyyyyyy
这个链接有一个如何使用jUDDI的web gui的指南http://juddi.apache.org/docs/3.2/juddi-client-guide/html_single/#_create_a_tmodek_key_generator_partition
您也可以通过编程方式创建它们。下面是一个例子https://svn.apache.org/repos/asf/juddi/trunk/juddi-examples/create-partition/src/main/java/org/apache/juddi/example/partition/SimpleCreateTmodelPartition.java
以下是您要查找的代码:
TModel keygen = UDDIClerk.createKeyGenator("www.mycoolcompany.com", "My Company's Keymodel generator", "en");
clerk.register(keygen);
System.out.println("Creation of Partition Success!");