同事解决的,摘抄上来备用。
问题描述:在OAF里调用ESB的服务报错如下:
Error Page
Exception Details.
oracle.apps.fnd.framework.OAException: oracle.jbo.JboException: JBO-29000: Unexpected exception caught: java.lang.IllegalAccessError, msg=tried to access class org.apache.commons.logging.LogFactory$1 from class org.apache.commons.logging.LogFactory
at oracle.apps.fnd.framework.OAException.wrapperException(OAException.java:912)
at oracle.apps.fnd.framework.OAException.wrapperException(OAException.java:888)
at _OAErrorPage._jspService(_OAErrorPage.java:221)
at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
分析:由于ESB API里需要引入很多jar包,其中包括:commons-logging.jar,事实上EBS之前在其它地方就存在了这个jar包。
在运行程序时追踪它到底使用的是哪个目录下的jar包:
方法1:
String myclassPath = URLDecoder.decode(org.apache.commons.logging.LogFactory.class.getProtectionDomain().getCodeSource().getLocation().getFile(), "UTF-8");
方法2:
String className = org.apache.commons.logging.LogFactory.class.getName().replace('.', '/');
String resource = "/" + className + ".class";
URL url = org.apache.commons.logging.LogFactory.class.getResource(resource);
System.out.println("路径:" + url.getFile());
通过查看发现系统调用的$IAS_ORACLE_HOME/ webservices/lib/commons-logging.jar。没有调用我们上传的$JAVA_TOP下的commons-logging.jar.
解决办法:
将$IAS_ORACLE_HOME/ webservices/lib/commons-logging.jar改名commons-logging.jar.old(如果目录下没有这个jar包,系统会去加载$JAVA_TOP下的)
将commons-logging.jar复制到$JAVA_TOP(用系统原来的这个包替换我们自己的)
这时运行可能会报以下错误:
oracle.apps.fnd.framework.OAException: oracle.jbo.JboException: JBO-29000: Unexpected exception caught: oracle.classloader.util.AnnotatedNoClassDefFoundError, msg=Missing class: org.apache.commons.logging.Log
Dependent class: oracle.webdb.wsrp.server.CommonsLogAdapter
Loader: oracle.wsrp:1.0
.....
.....
为了防止以上错误需要将本次ESB相关的其它JAR配置到$ORA_CONFIG_HOME/10.1.3/j2ee/oacore/config/server.xml
如: 删除:
<code-source path="/oracle/ebsapp/appldev3/DEV3/apps/tech_st/10.1.3/webservices/lib/commons-logging.jar"/>
添加:
code-source path="/oracle/ebsapp/appldev3/DEV3/apps/apps_st/comn/java/classes/commons-logging.jar"/>
<code-source path="/oracle/ebsapp/appldev3/DEV3/apps/apps_st/comn/java/classes/com.ibm.mq.headers.jar"/>
<code-source path="/oracle/ebsapp/appldev3/DEV3/apps/apps_st/comn/java/classes/com.ibm.mq.jar"/>
即把esb相关jar包都加上。
注意:为了防止AutoConfig后所添加的会丢失,需在模板中将之信息添加到 FND_TOP/admin/template/ FND_TOP/admin/template/ server_xml_1013.tmp
如: 删除行:
<code-source path="%s_weboh_oh%/webservices/lib/commons-logging.jar"/>
添加行:
<code-source path="%s_javatop%/commons-logging.jar"/>
<code-source path="%s_javatop%/com.ibm.mq.commonservices.jar"/>
<code-source path="%s_javatop%/com.ibm.mq.headers.jar"/>
<code-source path="%s_javatop%/com.ibm.mq.jar"/>
.........
........
重启后可正常使用。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com