前面的文章已经描述如何将自己的PL/SQL API发布到Oracle Integration Repositoy中,发布上去的集成接口还无法供集成使用的Web服务,是因为它还没有按照Web服务的规范发布为WSDL,发布接口为Web服务的步骤为:
下面描述是发布的详细步骤描述
一、ISG相关前提设置
在Web服务调用的时候,需要有一个应用数据库用户来连接EBS数据库,因此需要创建一个具备一定权限的用户,而为了简化设置的麻烦,Oracle提供了一个内建的用户 ASADMIN ,只要启用它并重置密码就可以了。另外一种方法是新建一个用户后进行授权,这种方法需要的步骤稍微多一点,再次就不做描述。
如果ISG的前提设置没有完成,在后面为集成接口 Generate WSDL 的时候就会报出如下的错误:
1,激活ASADMIN用户
以sysadmin登录Oracle EBS,切换到 User Management 职责,进入Users页面,查找出asadmin用户,点击 Reset Password 列中的图标
选择 Enter Manullay 方式来手工输入自己需要的密码
2,确认ASADMIN用户的角色
上面查找出asadmin用户后,选择 Update 按钮下的图标进入用户编辑界面,查看用户是否已经被分配了如下的 Apps Schema Connect Role 这个角色,如果没有请点击Assign Roles 按钮来添加这个角色
另外也可以通过如下的SQL语句来查看asadmin用户是否已分配相关的角色
1 2 3 4 5 6 7 8 9 |
select role_name from wf_user_roles where user_name='ASADMIN' ; select role_name from wf_user_role_assignments where user_name='ASADMIN' ; 查询的结果应该是: ROLE_NAME -------------------------------------------------------------------------------- ASADMIN UMX|APPS_SCHEMA_CONNECT |
3,重置中间服务器中ASADMIN的密码
由于asadmin的密码已经被重置,因此中间服务器的文件配置$INST_TOP/ora/10.1.3/j2ee/oafm/config/system-jazn-data.xml 中对应的密码也需要修改,由于配置中的密码已被加密,我们无法提供加密后的密码,使用过OC4J的同事应该都知道,Oracle提供了一种重置这里密码的方便方法,就是采用明文密码,在密码前添加一个警号(!),然后重启应用服务器后自动会重新加密。打开system-jazn-data.xml文件后,找到
<user>
<name>ASADMIN</name>
<display-name>Default Apps SOA User</display-name>
<description>Used by SOAProvider for DB connection</description>
<credentials>{903}qMgAeO1AjQjwOJ6rIB41Sx049uG0xzhs</credentials>
</user>
只要将credentials的值更改为自己的密码,如我的密码设置为 11111,就设置为 <credentials>!11111</credentials>。修改完成后重启oamf,简单的方法就是重启Oracle EBS应用服务。
二、为集成接口创建授权
发布到Oracle Integration Repositoy中的Web服务能够被访问必须有相应的权限才可以,这也是受到AOL安全模型限制的一个体现。
登录EBS后切换到Integrated SOA Gateway职责,在 Integration Repositoy 中找出已经上传好的客户化集成接口,选择接口过程和方法后点击Create Grant 按钮
选择授权类型:All Users、Group of Users 和 Specific USer,下面设置为最后一种方式
三、发布Web服务
完成以上工作后,点击Generate WSDL 按钮来生成集成接口对应的Web服务WSDL信息
成功完成后可以看到如下Web服务的状态为:Generated
点击 Deploy 按钮来发布Web服务到中间服务器中,发布后Web服务的状态为: Deployed
至此就可以通过 http://ebs006.hand-china.com:8001/webservices/SOAProvider/plsql/oracleseeker_emp_pkg/?wsdl 来访问通过客户化PL/SQL发布的Web服务了,后续将描述如何进行Web服务的测试。