加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

PLSQL WEBSERVICES 发布

发布时间:2020-12-16 23:15:10 所属栏目:安全 来源:网络整理
导读:? ? 一. 在Oracle EBS二次开发中,PL/SQL程序是开发人员使用频率最高的开发语言,同时也是大家最容易掌握的工具之一了,而我们也很希望将自己编写的PL/SQL程序发布为Web服务来提供给客户端程序使用,同时也可以实现和外围系统的集成,有了irep_parser这个工

?

?

一. 在Oracle EBS二次开发中,PL/SQL程序是开发人员使用频率最高的开发语言,同时也是大家最容易掌握的工具之一了,而我们也很希望将自己编写的PL/SQL程序发布为Web服务来提供给客户端程序使用,同时也可以实现和外围系统的集成,有了irep_parser这个工具,我们就可以将自己编写的PL/SQL程序发布到Oracle Integration Repositoy中。OracleIntegration Repositoy中集成接口的来源都是Oracle,客户化的程序发布上去的为Custom:

下面描述是发布的详细步骤描述:

?

二. 在Web服务调用的时候,需要有一个应用数据库用户来连接EBS数据库,因此需要创建一个具备一定权限的用户,而为了简化设置的麻烦,Oracle提供了一个内建的用户?ASADMIN?,只要启用它并重置密码就可以了。另外一种方法是新建一个用户后进行授权,这种方法需要的步骤稍微多一点,再次就不做描述。如果ISG的前提设置没有完成,在后面为集成接口Generate WSDL 的时候就会报出如下的错误:

1.???????激活ASADMIN账户.

ASADMIN在系统中默认是失效的,以SYSADMIN账户登录,在用户管理职责下面查找出ASADMIN账户并重置ASADMIN的密码为welcome.如下图

2. 确认ASADMIN用户的角色

在上图中点更新确保已经分配Apps Schema ConnectRole(Apps 模式连接职责)职责,如果没有请点分配职责添加.

也可以通过SQL查看

select role_namefrom wf_user_roles where user_name='ASADMIN' ;

select role_namefrom wf_user_role_assignments where user_name='ASADMIN' ;

查询的结果应该是: ROLE_NAME

-----------------------------------

ASADMINUMX|APPS_SCHEMA_CONNECT

2.??重置中间服务器中ASADMIN的密码

由于asadmin的密码已经被重置,因此中间服务器的文件配置$INST_TOP/ora/10.1.3/j2ee/oafm/config/system-jazn-data.xml中对应的密码也需要修改,由于配置中的密码已被加密,我们无法提供加密后的密码,使用过OC4J的同事应该都知道,Oracle提供了一种重置这里密码的方便方法,就是采用明文密码,在密码前添加一个警号(!),然后重启应用服务器后自动会重新加密。打开system-jazn-data.xml文件后,找到ASADMIN用户如下:

<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>

上传到FTP服务器,TXT文件不要用二进制,要用ASII(text)模式上传,经测试二进制上传的文件会多很多空格,还有后面上传PLS文件的时候也一样,要不生成ILDE文件的时候会生成不了,错误代码没有截取了.

只要将credentials的值更改为自己的密码,如我的密码设置上面重置的密码welcome,就设置为<credentials>!welcome</credentials>。修改完成后重启.

?

如果系统不支持的话还要打很多补丁,我来这边系统补丁已经打好了.接下来

三.添加CUX客户化应用到Product Family

1.添加产品家族(AMWAYCUSTOMIZATION APPLICATION SUITE)

begin

?ad_pa_insert_package.insert_ad_pm_product_info(x_product_abbreviation=> 'cux_pf',

????????????????????????????????????????????????x_pseudo_product_flag => 'N',

????????????????????????????????????????????????x_product_family_flag => 'Y',

????????????????????????????????????????????????x_application_short_name => NULL,

????????????? ???????????????????????????????????x_product_name=> 'AMWAY CUSTOMIZATION APPLICATION SUITE',

????????????????????????????????????????????????x_product_family_abbreviation => NULL,

????????????????????????????????????????????????x_product_family_name => NULL,

????????????????????????????????????????????????x_aru_update_date => TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mm:ss' ),

????????????????????????????????????????????????x_currdate => to_char(SYSDATE,

????????????????????????????? ???????????????????x_last_updated_by => -1,

????????????????????????????????????????????????x_created_by => -1);

? COMMIT;

end;

2.注册(AMWAYCUSTOMIZATION APPLICATION(CUX))应用到产品家族中

BEGIN

?ad_pa_insert_package.insert_ad_pm_product_info(x_product_abbreviation??????? => 'cux',

????????????????????????????????????????????????x_pseudo_product_flag????????=> 'N',

????????????????????????????????????????????????x_product_family_flag????????=> 'N',

????????????????????????????????????????? ???????x_application_short_name????? => 'CUX',

????????????????????????????????????????????????x_product_name???????????????=> 'AMWAY CUSTOMIZATION APPLICATION',

??? ?????????????????????????????????????????????x_product_family_name???????? => NULL,

????????????????????????????????????????????????x_aru_update_date????????????=> to_char(SYSDATE,

?????????????????????????????????????????????????????????????????????????????????????????'yyyy-mm-ddhh24:mm:ss'),

????????????????????????????????????????????????x_currdate???????????????????=> to_char(SYSDATE,

?????????????????????????????????????????????????????????????????????????????????????????'yyyy-mm-dd hh24:mm:ss'),

????????????????????????????????????????????????x_last_updated_by????????????=> -1,

????????????????????????????????????????????????x_created_by?????????????????=> -1);

? COMMIT;

END;

?

3.关联(AMWAYCUSTOMIZATION APPLICATION)应用到产品家族(AMWAY CUSTOMIZATION APPLICATIONSUITE)下

BEGIN

?ad_pa_insert_package.insert_ad_pm_prod_family_map(x_product_abbreviation=> 'cux',

???????????????????????????????????????????????????x_product_family_abbreviation => 'cux_pf',

???????????????????????????????????????????????????x_aru_update_date =>to_char(SYSDATE,

????????????????????????????????????????????????????????????????????????????????'yyyy-mm-dd hh24:mm:ss' ),

???????????????????????????????????????????????????x_currdate => to_char(SYSDATE,

??????????????????????? ??????????????????????????????????????????????????'yyyy-mm-ddhh24:mm:ss' ),

???????????????????????????????????????????????????x_last_updated_by => -1,

???????????????????????????????????????????????????x_created_by => -1);

? COMMIT;

END;

?

四、按照集成接口标记规范编写PL/SQL程序

CREATE OR REPLACEPACKAGE cux_po_order_pkg AS

? /* $Header: $ zao.lin*/

? /*#

? * This Package Using Create the Po OrderInformation

? * @rep:scope public

? * @rep:product CUX

? * @rep:lifecycle active

? * @rep:displayname CUX Po Order

? * @rep:compatibility S

? * @rep:category BUSINESS_ENTITYCUX_PO_ORDERS2

? */

? TYPE cux_po_headers_rec IS RECORD(

??? order_company??? VARCHAR2(5),

??? po_number??????? VARCHAR2(8),

??? po_type????????? VARCHAR2(2),

??? order_date?????? NUMBER,

??? jde_blanch_plant VARCHAR2(12),

??? supplier_number? VARCHAR2(30),

??? ship_to????????? VARCHAR2(10),

??? reference1?????? VARCHAR2(25),

??? currency_code??? VARCHAR2(3),

??? exchange_rate??? NUMBER,

??? payment_term???? VARCHAR2(3),

??? attribute1?????? VARCHAR2(240),

??? attribute2?????? VARCHAR2(240),

??? attribute3?????? VARCHAR2(240),

??? attribute4?????? VARCHAR2(240),

??? attribute5?????? VARCHAR2(240),

??? attribute6?????? VARCHAR2(240),

??? attribute7?????? VARCHAR2(240),

??? attribute8?????? VARCHAR2(240),

??? attribute9?????? VARCHAR2(240),

??? attribute10????? VARCHAR2(240),

??? attribute11????? VARCHAR2(240),

??? attribute12????? VARCHAR2(240),

??? attribute13????? VARCHAR2(240),

??? attribute14????? VARCHAR2(240),

??? attribute15????? VARCHAR2(240));

? TYPE cux_po_lines_rec IS RECORD(

??? line_num??????????? NUMBER,

??? item_number???????? VARCHAR2(30),

??? description1??????? VARCHAR2(240),

??? description2??????? VARCHAR2(240),

??? uom???????????????? VARCHAR2(10),

??? order_quantity????? NUMBER,

??? received_quantity?? NUMBER,

??? unit_cost?????????? NUMBER,

??? request_date??????? NUMBER,

??? promise_date??????? NUMBER,

??? cancel_date???????? NUMBER,

??? jde_planner???????? VARCHAR2(10),

??? jde_buyer?????????? NUMBER,

??? reference1????????? VARCHAR2(25),

??? line_ship_to_number NUMBER,

??? location??????????? VARCHAR2(20),

??? last_status???????? VARCHAR2(3),

??? next_status???????? VARCHAR2(3),

??? attribute1????????? VARCHAR2(240),

??? attribute2????????? VARCHAR2(240),

??? attribute3????????? VARCHAR2(240),

??? attribute4????????? VARCHAR2(240),

??? attribute5????????? VARCHAR2(240),

??? attribute6????????? VARCHAR2(240),

??? attribute7????????? VARCHAR2(240),

??? attribute8????????? VARCHAR2(240),

??? attribute9??? ??????VARCHAR2(240),

??? attribute10???????? VARCHAR2(240),

??? attribute11???????? VARCHAR2(240),

??? attribute12???????? VARCHAR2(240),

??? attribute13???????? VARCHAR2(240),

??? attribute14???????? VARCHAR2(240),

??? attribute15???????? VARCHAR2(240));

? TYPE cux_po_headers_tbl IS TABLE OFcux_po_headers_rec;

? TYPE cux_po_lines_tbl IS TABLE OFcux_po_lines_rec;

? /*#

? * Create an PoOrder

? * @param x_return_status? return status

? * @param x_msg_data? message

? * @param p_po_header_tbl cux_po_headers_tbl,

? * @param p_po_line_tbl cux_po_lines_tbl

? * @rep:scope public

? * @rep:lifecycle active

? * @rep:displayname Create an CUX JDE Po Order

? */

? PROCEDURE create_order(x_return_status IN OUTNOCOPY VARCHAR2,

???????????????????????? x_msg_data????? IN OUT NOCOPY VARCHAR2,

???????????????????????? p_po_header_tbl INcux_po_headers_tbl,

???????????????????????? p_po_line_tbl?? IN cux_po_lines_tbl);

ENDcux_po_order_pkg;

?

程序包里面的注释一定要规范

关键几个标记描述:

@rep:product?CUX 代表集成接口注册到CUX应用中,必须是系统中存在的应用简称?
@rep:displayname? Cux Po Order集成接口的名称?
@param?存储过程和方法的参数,都需要标注出来供调用服务的客户端查看?
@rep:category BUSINESS_ENTITY?CUX_PO_ORDERS2 业务实体的类型,CUX_PO_ORDERS2必须在BUSINESS_ENTITY 值列表类型下定义存在,否则无法通过验证

?

注意:这里的输出参数(x_return_status,x_msg_data)一定要 IN OUT 参数,要不就不会显示出来.

五、验证集成接口标记并生成iLDT文件

$IAS_ORACLE_HOME/perl/bin/perl$FND_TOP/bin/irep_parser.pl -g -v -username=sysadmin cux:cux_jde_po_order_pkg.pls:12.0=cux_po_order_pkg.pls

将编写好的PLSQL声明定义保存为.pls文件(oracleseeker_emp_pkg.pls),并将其上传到服务器应用(xhu)的patch/115/sql目录下,通过Telnet使用命令来验证和生成集成接口标记文件,成功验证后会有如下的日志生成,同时会生成iLDT文件oracleseeker_emp_pkg_pls.ildt,如果标记存在问题会打印出对应的错误信息,需要注意查看错误消息并进行修正。

六. 将iLDT文件上传到OracleIntegration Repositoy中

?FNDLOADapps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/wfirep.lct cux_po_order_pkg_pls.ildt

成功上传之后通过Oracle Integration Repositoy可以查看如下的集成接口信息啦

下面就是授权这两个用户SYSADMIN,ASADMIN

然后身份验证:以用户变量

部署然后我们就可以查看WSDL

在链接中去掉 ?WSDL 直接回车 就可以访问刚刚发布的WEBSERVICES了

到这里还能确保你刚刚发布的WEBSERVICES没有问题了,还要测试

?

七.如果在发布过后想要更改参数的话,可以强制更新

?

$IAS_ORACLE_HOME/perl/bin/perl$FND_TOP/bin/irep_parser.pl -g -v -username=sysadmincux:patch/115/sql:cux_jde_po_order_pkg.pls:12.0=cux_jde_po_order_pkg.pls

版本号要加1 就是

…13.0=cux_jde_po_order_pkg.pls

FNDLOADapps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/wfirep.lctcux_po_order_pkg_pls.ildt - WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE

注意:在更新的时候一定要换一个业务实体的类型,刚刚的CUX_PO_ORDERS2必须在BUSINESS_ENTITY 值列表类型下重新定义一个新的.

以上是对WEBSERVICES一点总结,不好还请包含.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读