EBS OAF R12.2开发中Jar包签名不一致问题的处理

EBS OAF R12.2开发中Jar包签名不一致问题的处理

(版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处;否则请与本人联系,违者必究)

在开发阶段,经常需要调试类来帮助产品开发组来开发和测试java代码。但因为java代码在EBS都保存为压缩包格式(通过adadmin生成的签名的JAR包),所以必须在加载原本产品的JAR文件之前来加载调试类到classpath。我们可以把调试类放到目录<OA_HTML>/WEB-INF/classes来进行调试。但是,因为JAR包是签名的(通过jarsigner工具),所以一些类来自目录WEB-INF/classes的未签名的类和一些类来自签过名的JAR包的时候,就会抛出异常java.lang.SecurityException

weblogic.application.ModuleException:  class"oracle.apps.fnd.security.AppsServletFilter"'s
 signer information does not match signer information of other classes inthe same package
 atweblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1512)
 atweblogic.servlet.internal.WebAppModule.start(WebAppModule.java:482)
 at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
 atweblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
 atweblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
Truncated. see log file for completestacktrace

要避免上面的错误,可以做下面之一的操作

选项A:禁止Jar签名验证

Oracle WebLogic Server类加载器会检查JAR文件的大小和签名。因此,即使你创建了一个调试JAR文件,并拥有同样的签名,Oracle WebLogic Server也会抛出异常的。

要避免这个:

l  在startWeblogic.sh设置java属性
-Dweblogic.classloader.noJarSigners=true来禁止jar签名验证。在产品模式的话,jar签名验证模式是被启用的了。

l  拷贝调试类以及包结构到<OA_HTML>/WEB-INF/classes或者创建调试类的JAR包并拷贝到<OA_HTML>/WEB-INF/lib

l  使用下面的命令来重启OracleE-Business Suite中间层服务器:

$ADMIN_SCRIPT_HOME/adoacorectl.sh stop/start

选项B:从JAR文件中移除JAR签名信息

l  备份原先的存在于$JAVA_TOP/oracle/apps/fnd/jar中的JAR文件。

l  运行下面的ad工具来从你的产品JAR文件中移除签名信息:

l  

adjava -mx512m -nojit oracle.apps.ad.jri.admetarm -inputFile <backup of original jar>-outputFile <newjar>

l  拷贝调试类以及包结构到<OA_HTML>/WEB-INF/classes或者创建调试类的JAR包并拷贝到<OA_HTML>/WEB-INF/lib

l  使用下面的命令来重启OracleE-Business Suite中间层服务器:

$ADMIN_SCRIPT_HOME/adoacorectl.sh stop/start

l  在测试和调试完成时,恢复之前备份的JAR包

选项C:重新生成产品的JAR文件

l  备份原先的存在于$JAVA_TOP/oracle/apps/fnd/jar中的JAR文件。

l  添加调试类或者在修改$JAVA_TOP下的类

l  运行adadmin来生成产品的JAR文件。

l  产品JAR文件会由修改后的类文件更新。

l  使用下面的命令来重启OracleE-Business Suite中间层服务器:

$ADMIN_SCRIPT_HOME/adoacorectl.shstop/start

l  在测试和调试完成时,恢复之前备份的JAR包

注意:有时adadmin不会更新JAR文件如果类文件版本没有变化。如果出现这种情况,你可能需要强制重生成JAR文件。

注意:类文件的版本和大小都保存在<JAVA_TOP>/JRIMETA.DAT。如果你修改了JAVA_TOP中的一个类文件并运行adadmin来更新JAR文件,JRIMETA.DAT可能也被修改。

你可能感兴趣的:(签名,ebs,oaf,adoacorectl.sh)