2011年5月29日星期日

SOASuite_038:SOA Suite 11g 开发指南之十七:与 OSR(Oracle Service Registry)集成

开发运行环境:JDeveloper 11.1.1.5 + SOA Suite 11.1.1.5 + OSR 11.1.1.2。

本实验要求:
(1)完成《SOA Suite 11g 开发指南之九:为物流商配置JMS Queue 》。
(2)完成《图解安装 Oracle Service Registry 11.1.1.2.0 》。
(3)完成《图解创建 OSR Domain 》。

重要步骤说明:

1. 在JDeveloper中创建与OSR UDDI Server的连接。


2. 把发布在SOA Server上的服务发布到OSR UDDI Server上。
先访问http://localhost:7501/registry/uddi/web,登录后,选择Publish Tab,创建Business Entity,比如SOADemo Service Registry。




3. 发布成功后,在UDDI Server连接中可以看到该服务。


选择查看Report,可以看该服务的详细信息:


4. 修改POProcessing中的ValidateForCC Reference。
选择从OSR UDDI Server中选择WSDL:


选中以下两个选项表明:在运行时再从UDDI上确定该服务的Endpoint。




5. 在EM中的soa-infa的common属性中配置UDDI Query URL:
修改完后,需要重启SOA Server。


6.在OSR的Web管理界面上可以看到ValidateForCC服务。
你可以修改Acess Point,而POProcessing不受任何影响,这就是使用UDDI Server的好处。


如果你去查看composite.xml文件,你会发现ValidateForCC的reference值是一个uddi开头的东东。
这个就是在UDDI Server上的注册的Service Key,一个Key对应一个服务。
<reference name="getStatusByCC" ui:wsdlLocation="getStatusByCC.wsdl">
<interface.wsdl interface="http://oracle.com/sca/soapservice/CreditCardValidation/validationForCC/getStatusByCC#wsdl.interface(execute_ptt)"/>
<binding.ws port="http://oracle.com/sca/soapservice/CreditCardValidation/validationForCC/getStatusByCC#wsdl.endpoint(getStatusByCC/execute_pt)"
location="orauddi:/uddi:0eac65b0-9044-11e0-80fa-da5b907080fa"
soapVersion="1.1">
<property name="oracle.soa.uddi.serviceKey" type="xs:string" many="false">uddi:0eac65b0-9044-11e0-80fa-da5b907080fa</property>
<property name="weblogic.wsee.wsat.transaction.flowOption"
type="xs:string" many="false">WSDLDriven</property>
</binding.ws>
</reference>

7.重新发布POProcessing,测试大订单,成功调用ValidateForCC服务。

Project 下载:POProcessing (OSR).7z

参考文献:
1.http://biemond.blogspot.com/2009/12/using-oracle-service-registry-in-soa.html。

1 条评论:

Unknown 说...

请教一下如何更改自动生成的serviceKey?谢谢