在二次开发完成后,可以将所做的修改部署到测试环境上去进行初步的流程测试,以发现bug,修正错误。因为是二次开发,在你本地的myclasses目录下既有系统原有的标准代码,也有你自己二次开发过的代码。如果涉及到的java类的数量比较多的话,部署的时候也会比较费劲。所以在做开发的时候,一边做一边整理出一个列表绝对会是个好习惯的。整理个类的清单出来,这样在部署的过程中,就不容易发生覆盖错误。一般在部署之前,先把$JAVA_TOP下的做了二次开发的目录整个打个tar包备份出来,以备发生严重错误时进行恢复。然后再根据整理出来的清单,把需要覆盖掉的系统原标准类添加后缀bak。这样做的好处是,如果发生了少量的类的覆盖错误,可以直接将原来的bak类恢复,如果发生了无法解决的系统问题,可以将整个目录用原来备份的tar包覆盖,看问题是否能够解决。另外还需注意EBS的官方patch对应用系统的影响,每次在打补丁之前应做仔细评估,看是否需要打,打了以后是否需要调整原有的客户化程序。我的部署方式: 1、对于少量的修改,直接使用ftp将myclasses下修改过的class文件,上传到应用服务器上相对应的目录下。将修改的PG或者RN文件,导入到EBS数据库中去。 每在一个环境下开发,我一般会创建两个bat脚本文件,一个是my_export.bat,一个是my_import.bat 其内容如下: my_export.bat D:/p6509325_R12_GENERIC/jdevbin/oaext/bin/export.bat %1 -rootdir D:/export -username apps -password apps -dbconnection "(DESCRIPTION=(ADDRESS=
(PROTOCOL=tcp)(HOST=ebs.erpsoft.com)(PORT = 1521))(CONNECT_DATA=(SID=PROD)))" pause my_import.bat D:/p6509325_R12_GENERIC/jdevbin/oaext/bin/import.bat %1 -rootdir D:/p6509325_R12_GENERIC/jdevhome/jdev/myprojects -username apps -password apps
-dbconnection "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ebs.erpsoft.com)(PORT = 1521))(CONNECT_DATA=(SID=PROD)))" pause 有了以上两个文件,则进行手工导出时,可以在cmd中运行如下命令: D:/oaf_bat/prod>my_export /oracle/apps/eam/workorder/webui/EAM_WO_SEARCH_RG 其中后面的/oracle/apps/eam/workorder/webui/EAM_WO_SEARCH_RG通过查看环境中页面的“关于此页”链接可以得到。 在进行手工导入时,可以在cmd中运行如下命令: D:/oaf_bat/prod>my_import D:/p6509325_R12_GENERIC/jdevhome/jdev/myprojects/oracle/apps/eam/workorder/webui/EAM_WO_SEARCH_RG.xml 注意导入时需要加xml的后缀,而在导出时则不需要加xml后缀。 2、对于大量的部署,则可以直接使用自动脚本来完成。 当然,首先还是需要整理出一个部署清单才行。 在$JAVA_TOP目录下新建一个oaf_deploy目录,在其下再创建oracle/apps目录, 将你的myclasses目录下的oracle/apps下的需要部署的应用子目录整个上传到该目录下。 完成上面的工作后,需要编写两个脚本:oaf_cp.sh和oaf_imp.sh oaf_cp.sh针对需要直接覆盖的xml和class文件 其中的内容为 mv $JAVA_TOP/oracle/apps/eam/server/AssetNumberRVO.xml $JAVA_TOP/oaf_deploy/oracle/apps/eam/server/AssetNumberRVO.xml.bak cp $JAVA_TOP/oaf_deploy/oracle/apps/eam/server/AssetNumberRVO.xml $JAVA_TOP/oracle/apps/eam/server/AssetNumberRVO.xml mv $JAVA_TOP/oracle/apps/eam/workorder/server/WorkOrdersVORowImpl.class
$JAVA_TOP/oaf_deploy/oracle/apps/eam/workorder/server/WorkOrdersVORowImpl.class.bak cp $JAVA_TOP/oaf_deploy/oracle/apps/eam/workorder/server/WorkOrdersVORowImpl.class
$JAVA_TOP/oracle/apps/eam/workorder/server/WorkOrdersVORowImpl.class oaf_imp.sh针对需要导入数据库的PG和RN文件 其中的内容为 java oracle.jrad.tools.xml.importer.XMLImporter $JAVA_TOP/oaf_deploy/oracle/apps/eam/workorder/webui/EAM_EW_START_PAGE.xml -rootdir
$JAVA_TOP/oaf_deploy -username apps -password apps -dbconnection "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ebs.erpsoft.com)(PORT = 1521))
(CONNECT_DATA=(SID=PROD)))" java oracle.jrad.tools.xml.importer.XMLImporter $JAVA_TOP/oaf_deploy/oracle/apps/eam/workorder/webui/EAM_WO_SEARCH_RG.xml -rootdir
$JAVA_TOP/oaf_deploy -username apps -password apps -dbconnection "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ebs.erpsoft.com)(PORT = 1521))
(CONNECT_DATA=(SID=PROD)))" 然后将上面创建的两个脚本上传到$JAVA_TOP目录下,修改文件属性,使其可以在应用用户(比如applprod)下执行。 上述过程完成后,即可执行自动脚本进行批量部署。 3、部署完成后,需要重启服务,一般需要重启apache和oacore服务,命令如下: cd /u01/prod/inst/apps/PROD_erpprod/admin/scripts adapcctl.sh stop adoacorectl.sh stop sleep 10 adapcctl.sh start adoacorectl.sh start 可以把下面的命令编写为脚本,以方便使用。当然用时候为了省事,直接重启全部应用亦可。