referencing faces in library- oracle class loader fails
Hello,
I'm having considerable problems trying to deploy an EAR that leverages a library with JSF utility methods. An EAR that handles all JSF logic internally with direct API calls, can deploy fine. But, an EAR which leverages a seperate jar (that referneces JSF), fails with the Oracle class loader saying it can not find FacesContext. So, I have the following:
* EAR X (EJB app and WAR)
* JSF Utility Jar Y.
If EAR X does not reference jar Y, every thing works fine (although I'd have to create a bunch of redudant JSF logic). If EAR X does reference jar Y, I encouter the stack trace at the end of thos post.
I tried adding the JSF libraries (jsf-impl, jsf-api, etc, etc) to jar Y, so that the Oracle class loader could resolve the class, but, if the JSF libraries are referenced from within jar Y, I can not deploy any EARs that reference Y- OC4J enters an infinite loop during deployment at step,
"Binding web application(s) to site default-web-site begins.."
Every thing works fine in the embedded OC4J environment (JDeveloper 10.1.3g). I only have these problems when deploying to standalone OC4J (10g 10.1.3 also). Not sure that it would matter, but I have the same problem using JSP 1.2 or 2.0. Perhaps I'm missing a really obvious configuration setting? I'm new to oc4j/jdeveloper but fairly experienced with j2ee. Any help would be appreciated. Thanks. Here's the stack trace:
javax.servlet.jsp.JspException: oracle.classloader.util.AnnotatedNoClassDefFoundError:
Missing class: javax.faces.context.FacesContext
Dependent class: com.tlc.framework.jsf.JSFEnvironmentUtility
Loader: TLC-Core:0.8
Code-Source: /E:/OracleAS_1/j2ee/home/shared-lib/TLC-Core/0.8/TLC-Core.jar Configuration: <code-source> in /E:/OracleAS_1/j2ee/home/config/server.xml
The missing class is available from the following locations:
1. Code-Source: /E:/OracleAS_1/j2ee/home/shared-lib/JSF/1.1/jsf-api.jar (from <code-source> in /E:/OracleAS_1/j2ee/home/config/server.xml)
This code-source is available in loader JSF:1.1.
2. Code-Source: /E:/OracleAS_1/j2ee/home/shared-lib/TLC-Core/0.8/jsf-api.jar ()
This code-source is not in use by any loader.
3. Code-Source: /E:/OracleAS_1/j2ee/home/applications/TLC-WWDir/TLC-WWDir-web/WEB-INF/lib/jsf-api.jar (from WEB-INF/lib/ directory in E:\OracleAS_1\j2ee\home\applications\TLC-WWDir\TLC-WWDir-web\WEB-INF\lib) This code-source is available in loader TLC-WWDir.web.TLC-WWDir-web:0.0.0. at com.sun.faces.taglib.html_basic.SelectOneMenuTag.doEndTag(SelectOneMenuTag.java:515) at wwdir.entityTypeSelect._jspService(_entityTypeSelect.java:189) [SRC:/wwdir/entityTypeSelect.jsp:26] at com.orionserver[Oracle Containers for J2EE 10g (10.1.3.0.0) ].http.OrionHttpJspPage.service(OrionHttpJspPage.java:59) at oracle.jsp.runtimev2.JspPageTable.compileAndServe(JspPageTable.java:662) at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:370) at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:478) at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:401) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:719) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:376) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.unprivileged_forward(ServletRequestDispatcher.java:270) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.access$100(ServletRequestDispatcher.java:42) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher$2.oc4jRun(ServletRequestDispatcher.java:204) at oracle.oc4j.security.OC4JSecurity.doPrivileged(OC4JSecurity.java:283) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:209) at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322) at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:719) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:376) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:870) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:451) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.AJPRequestHandler.run(AJPRequestHandler.java:299) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.AJPRequestHandler.run(AJPRequestHandler.java:187) at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260) at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303) at java.lang.Thread.run(Thread.java:595)