Greetings,
I was wondering if I could leverage some knowledge / experiences out
there
regarding exposing a Trinidad JSF app as a Portlet within JDeveloper
10.1.3.2 & the pre-configured Webcenter OC4J.
I was easily able to expose a Sun Reference Implementation JSF
application
as a Portlet, using the Faces Portlet Bridge, and then consume using a
Webcenter page and Portlet producer. However, when I try this with the
Trinidad App (no matter how trivial), I experience the exception
listed at
the bottom of this e-mail when attempting to consume it.
For both the Sun RI & Trinidad JSF apps I followed the same process to
expose (as documented on the Oracle Web Center site):
- Add the Portlet Faces Bridge library to each of the apps
- Create the Portlet.xml deployment descriptor and make the
necessary
modifications
- Modify the web.xml file
- Deploy apps to the WebCenter preconfigured OC4J
- Create a WebCenter application, register the Portlet
producers and
consume
For both apps, I can view the wsrp WSDL and all Portlet registrations
test
successfully. I can run them as straight JSF apps without any problems.
So, I'm not sure where to go from here. I have read a couple of forum
entries for this particular exception, and they suggest increasing the
Portlet producer timeout durations, but this has not seemed to help.
Interestingly, after some experimentation I can trigger the error on
a Sun
RI app by just adding the Trinidad libraries to the project (not
using any
of the components) which makes me think there is some kind of
incompatibility.
Does anybody have any thoughts as to where the issue might lay? Is it
likely on the consumption side or something to do with the Portlet
deployment? Does the preconfigured WebCenter OC4J support Trinidad? I
remember reading somewhere that Trinidad and ADF Faces don't mix very
well
and to consume the Portlets I think you need to use an ADF Portlet
library.
I am planning to stand up a complete Oracle Portal stack to test the
producers also, but haven't got that far yet.
Thanks in advance,
Here is the exception received when trying to consume the portlet:
SEVERE:
oracle.adf.model.portlet.binding.PortletBindingException:
Unable to get portlet response (Internal Error) for portlet binding
ReallyEasyDemoPortlet1_1
at
oracle.adf.model.portlet.binding.PortletBinding.getPortletRendition(PortletBinding.java:514)
at
oracle.adfinternal.view.faces.renderkit.html.portlet.PortletRenderer.preRender(PortletRenderer.java:417)
at
oracle.adfinternal.view.faces.renderkit.html.customizable.ShowDetailFrameRenderer.encodeBegin(ShowDetailFrameRenderer.java:227)
at
oracle.adf.view.faces.component.UIXComponentBase.encodeBegin(UIXComponentBase.java:593)
at
oracle.adfinternal.view.faces.renderkit.RenderUtils.encodeRecursive(RenderUtils.java:39)
at
oracle.adfinternal.view.faces.renderkit.core.CoreRenderer.encodeChild(CoreRenderer.java:242)
at
oracle.adfinternal.view.faces.renderkit.core.CoreRenderer.encodeAllChildren(CoreRenderer.java:265)
at
oracle.adfinternal.view.faces.renderkit.core.xhtml.PanelPartialRootRenderer.renderContent(PanelPartialRootRenderer.java:65)
at
oracle.adfinternal.view.faces.renderkit.core.xhtml.BodyRenderer.renderContent(BodyRenderer.java:117)
at
oracle.adfinternal.view.faces.renderkit.core.xhtml.PanelPartialRootRenderer.encodeAll(PanelPartialRootRenderer.java:147)
at
oracle.adfinternal.view.faces.renderkit.core.xhtml.BodyRenderer.encodeAll(BodyRenderer.java:60)
at
oracle.adfinternal.view.faces.renderkit.core.CoreRenderer.encodeEnd(CoreRenderer.java:169)
at
oracle.adf.view.faces.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:624)
at
javax.faces.webapp.UIComponentTag.encodeEnd(UIComponentTag.java:645)
at
javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:568)
at
oracle.adf.view.faces.webapp.UIXComponentTag.doEndTag(UIXComponentTag.java:100)
at
_mdssys._viewcontroller._public__html._untitled1_jspx._jspService(_untitled1_jspx.java:103)
at
com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
at
oracle.jsp.runtimev2.JspPageTable.compileAndServe(JspPageTable.java:724)
at
oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:414)
at
oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:598)
at
oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:522)
at
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at
com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64)
at oracle.mds.jsp.MDSJSPFilter.doFilter(Unknown
Source)
at
com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:622)
at
com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:369)
at
com.evermind.server.http.ServletRequestDispatcher.unprivileged_forward(ServletRequestDispatcher.java:286)
at
com.evermind.server.http.ServletRequestDispatcher.access$100(ServletRequestDispatcher.java:50)
at
com.evermind.server.http.ServletRequestDispatcher$2.oc4jRun(ServletRequestDispatcher.java:192)
at
oracle.oc4j.security.OC4JSecurity.doPrivileged(OC4JSecurity.java:283)
at
com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:197)
at
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:346)
at
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:152)
at
oracle.adfinternal.view.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:157)
at
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:107)
at
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
at
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
at
javax.faces.webapp.FacesServlet.service(FacesServlet.java:214)
at
com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64)
at
oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._invokeDoFilter(AdfFacesFilterImpl.java:228)
at
oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._doFilterImpl(AdfFacesFilterImpl.java:197)
at
oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl.doFilter(AdfFacesFilterImpl.java:123)
at
oracle.adf.view.faces.webapp.AdfFacesFilter.doFilter(AdfFacesFilter.java:103)
at
com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:15)
at
oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:162)
at
com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:620)
at
com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:369)
at
com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:865)
at
com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:447)
at
com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:215)
at
com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:117)
at
com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:110)
at
oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
at
oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java:239)
at
oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcceptHandler.java:34)
at
oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHandler.java:880)
at
com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:298)
at java.lang.Thread.run(Thread.java:595)
Caused by:
oracle.portlet.client.container.PortletRemoteException:
oracle.portlet.server.container.OperationFailedException:
oracle.portlet.wsrp.v1.OperationFailedException:
oracle.portlet.wsrp.v1.soap.OperationFailed
at
oracle.portlet.client.techimpl.wsrp.WSRPBaseTerminalPipe.processException(WSRPBaseTerminalPipe.java:37)
at
oracle.portlet.client.techimpl.wsrp.WSRPGetMarkupPipe.execute(WSRPGetMarkupPipe.java:185)
at
oracle.portlet.client.techimpl.wsrp.WSRPGetMarkupPipe.pre(WSRPGetMarkupPipe.java:52)
at
oracle.portlet.client.service.pipeline.PipeContext.internalExecute2(PipeContext.java:516)
at
oracle.portlet.client.service.pipeline.PipeContext.internalExecute(PipeContext.java:403)
at
oracle.portlet.client.service.pipeline.PipeContextRunnable.run(PipeContextRunnable.java:24)
at
edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:431)
at
edu.emory.mathcs.backport.java.util.concurrent.FutureTask.run(FutureTask.java:176)
at
oracle.portlet.client.service.pipeline.ModifiedThreadPoolExecutor$Worker.runTask(ModifiedThreadPoolExecutor.java:398)
at
oracle.portlet.client.service.pipeline.ModifiedThreadPoolExecutor$Worker.run(ModifiedThreadPoolExecutor.java:423)
... 1 more
Caused by:
oracle.portlet.server.container.OperationFailedException:
oracle.portlet.wsrp.v1.OperationFailedException:
oracle.portlet.wsrp.v1.soap.OperationFailed
at
oracle.portlet.wsrp.v1.ServerToWSRPv1.getMarkup(ServerToWSRPv1.java:1093)
at
oracle.portlet.client.connection.wsrp.ActivityServerWrapper.getMarkup(ActivityServerWrapper.java:1330)
at
oracle.portlet.client.techimpl.wsrp.WSRPGetMarkupPipe.execute(WSRPGetMarkupPipe.java:116)
... 9 more
Caused by: oracle.portlet.wsrp.v1.OperationFailedException:
oracle.portlet.wsrp.v1.soap.OperationFailed
at
oracle.portlet.wsrp.v1.WSRP_v1_Markup_PortTypeJaxbToSoap.getMarkup(WSRP_v1_Markup_PortTypeJaxbToSoap.java:101)
at
oracle.portlet.wsrp.v1.ServerToWSRPv1.getMarkup(ServerToWSRPv1.java:977)
... 11 more
Caused by: oracle.portlet.wsrp.v1.soap.OperationFailed
at
oracle.portlet.wsrp.v1.soap.runtime.WSRP_v1_Markup_PortType_getMarkup_Fault_SOAPSerializer.deserializeDetail(WSRP_v1_Markup_PortType_getMarkup_Fault_SOAPSerializer.java:269)
at
oracle.j2ee.ws.common.encoding.SOAPFaultInfoSerializer.doDeserializeSOAP11(SOAPFaultInfoSerializer.java:132)
at
oracle.j2ee.ws.common.encoding.SOAPFaultInfoSerializer.doDeserialize(SOAPFaultInfoSerializer.java:94)
at
oracle.j2ee.ws.common.encoding.ObjectSerializerBase.deserialize(ObjectSerializerBase.java:180)
at
oracle.j2ee.ws.common.encoding.ReferenceableSerializerImpl.deserialize(ReferenceableSerializerImpl.java:147)
at
oracle.portlet.wsrp.v1.soap.runtime.WSRP_v1_Markup_Binding_SOAP_Stub._readBodyFaultElement(WSRP_v1_Markup_Binding_SOAP_Stub.java:456)
at
oracle.j2ee.ws.client.StreamingSender._sendImpl(StreamingSender.java:321)
at
oracle.j2ee.ws.client.StreamingSender._send(StreamingSender.java:112)
at
oracle.portlet.wsrp.v1.soap.runtime.WSRP_v1_Markup_Binding_SOAP_Stub.getMarkup(WSRP_v1_Markup_Binding_SOAP_Stub.java:76)
at
oracle.portlet.wsrp.v1.WSRP_v1_Markup_PortTypeJaxbToSoap.getMarkup(WSRP_v1_Markup_PortTypeJaxbToSoap.java:78)
... 12 more
Portlet.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<portlet-app
xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
version="1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd
http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
<portlet>
<description>Really Easy Demo Portlet</description>
<portlet-name>ReallyEasyDemo</portlet-name>
<display-name>Really Easy Demo portlet</display-name>
<portlet-class>oracle.portlet.server.bridges.jsf.FacesPortlet
</portlet-class>
<init-param>
<name>DefaultPage.view</name>
<value>/hello.jspx</value>
</init-param>
<init-param>
<name>BridgeLifecycleListeners</name>
<value>
oracle.portlet.server.bridges.jsf.adf.ADFFacesBridgeLifecycleListener
</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<portlet-info>
<title>Really Easy Demo Portlet</title>
<short-title>ReallyEasyDemo</short-title>
</portlet-info>
</portlet>
</portlet-app>
Web.xml
<?xml version = '1.0' encoding = 'ISO-8859-1'?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
<!--param-value>server</param-value-->
</context-param>
<context-param>
<param-name>org.apache.myfaces.trinidad.USE_APPLICATION_VIEW_CACHE</param-name>
<param-value>false</param-value>
</context-param>
<!--<filter>
<filter-name>adfBindings</filter-name>
<filter-class>oracle.adf.model.servlet.ADFBindingFilter</filter-class>
</filter>
-->
<context-param>
<param-name>org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.apache.myfaces.trinidad.CHANGE_PERSISTENCE</param-name>
<param-value>session</param-value>
</context-param>
<filter>
<filter-name>trinidad</filter-name>
<filter-class>org.apache.myfaces.trinidad.webapp.TrinidadFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>trinidad</filter-name>
<servlet-name>faces</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>faces</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>resources</servlet-name>
<servlet-class>org.apache.myfaces.trinidad.webapp.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>faces</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resources</servlet-name>
<url-pattern>/adf/*</url-pattern>
</servlet-mapping>
</web-app>
Faces-config.xml
<?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer
Faces Config 1.0//EN"
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd" >
<faces-config>
<application>
<default-render-kit-id>
org.apache.myfaces.trinidad.core
</default-render-kit-id>
</application>
</faces-config>
Chris.