1

https://docs.wso2.com/display/Governance460/Oracle+Service+Bus之后 ,我正在尝试将 Oracle Service Bus 12c(OSB) 与 WSO2 Governance Registry 4.6.0(G-Reg) 集成。

我已经在 OSB (greg-uddi) 上添加了 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 管理控制台,代理/wsdl 列表中没有任何内容,仅在服务列表中存在“示例”,但没有任何有用的信息(也没有有效的 url,也没有内容)。

怎么了?我必须做什么才能在 G-REG 上发布 wsdl?

4

1 回答 1

1

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!");
于 2015-07-01T13:00:57.837 回答