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(Port
letBinding.java:514)
at
oracle.adfinternal.view.faces.renderkit.html.portlet.PortletRenderer.pre
Render(PortletRenderer.java:417)
at
oracle.adfinternal.view.faces.renderkit.html.customizable.ShowDetailFram
eRenderer.encodeBegin(ShowDetailFrameRenderer.java:227)
at
oracle.adf.view.faces.component.UIXComponentBase.encodeBegin(UIXComponen
tBase.java:593)
at
oracle.adfinternal.view.faces.renderkit.RenderUtils.encodeRecursive(Rend
erUtils.java:39)
at
oracle.adfinternal.view.faces.renderkit.core.CoreRenderer.encodeChild(Co
reRenderer.java:242)
at
oracle.adfinternal.view.faces.renderkit.core.CoreRenderer.encodeAllChild
ren(CoreRenderer.java:265)
at
oracle.adfinternal.view.faces.renderkit.core.xhtml.PanelPartialRootRende
rer.renderContent(PanelPartialRootRenderer.java:65)
at
oracle.adfinternal.view.faces.renderkit.core.xhtml.BodyRenderer.renderCo
ntent(BodyRenderer.java:117)
at
oracle.adfinternal.view.faces.renderkit.core.xhtml.PanelPartialRootRende
rer.encodeAll(PanelPartialRootRenderer.java:147)
at
oracle.adfinternal.view.faces.renderkit.core.xhtml.BodyRenderer.encodeAl
l(BodyRenderer.java:60)
at
oracle.adfinternal.view.faces.renderkit.core.CoreRenderer.encodeEnd(Core
Renderer.java:169)
at
oracle.adf.view.faces.component.UIXComponentBase.encodeEnd(UIXComponentB
ase.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.ja
va:100)
at
_mdssys._viewcontroller._public__html._untitled1_jspx._jspService(_untit
led1_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(ResourceFilterChai
n.java:64)
at oracle.mds.jsp.MDSJSPFilter.doFilter(Unknown Source)
at
com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestD
ispatcher.java:622)
at
com.evermind.server.http.ServletRequestDispatcher.forwardInternal(Servle
tRequestDispatcher.java:369)
at
com.evermind.server.http.ServletRequestDispatcher.unprivileged_forward(S
ervletRequestDispatcher.java:286)
at
com.evermind.server.http.ServletRequestDispatcher.access$100(ServletRequ
estDispatcher.java:50)
at
com.evermind.server.http.ServletRequestDispatcher$2.oc4jRun(ServletReque
stDispatcher.java:192)
at
oracle.oc4j.security.OC4JSecurity.doPrivileged(OC4JSecurity.java:283)
at
com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequest
Dispatcher.java:197)
at
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.j
ava:346)
at
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.jav
a:152)
at
oracle.adfinternal.view.faces.application.ViewHandlerImpl.renderView(Vie
wHandlerImpl.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(ResourceFilterChai
n.java:64)
at
oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._invokeDoFilter(
AdfFacesFilterImpl.java:228)
at
oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._doFilterImpl(Ad
fFacesFilterImpl.java:197)
at
oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl.doFilter(AdfFace
sFilterImpl.java:123)
at
oracle.adf.view.faces.webapp.AdfFacesFilter.doFilter(AdfFacesFilter.java
:103)
at
com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChai
n.java:15)
at
oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java
:162)
at
com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestD
ispatcher.java:620)
at
com.evermind.server.http.ServletRequestDispatcher.forwardInternal(Servle
tRequestDispatcher.java:369)
at
com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequest
Handler.java:865)
at
com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHa
ndler.java:447)
at
com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestH
andler.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(ServerSocke
tReadHandler.java:260)
at
oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSoc
ketAcceptHandler.java:239)
at
oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcc
eptHandler.java:34)
at
oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(Ser
verSocketAcceptHandler.java:880)
at
com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(Releasab
leResourcePooledExecutor.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.processExceptio
n(WSRPBaseTerminalPipe.java:37)
at
oracle.portlet.client.techimpl.wsrp.WSRPGetMarkupPipe.execute(WSRPGetMar
kupPipe.java:185)
at
oracle.portlet.client.techimpl.wsrp.WSRPGetMarkupPipe.pre(WSRPGetMarkupP
ipe.java:52)
at
oracle.portlet.client.service.pipeline.PipeContext.internalExecute2(Pipe
Context.java:516)
at
oracle.portlet.client.service.pipeline.PipeContext.internalExecute(PipeC
ontext.java:403)
at
oracle.portlet.client.service.pipeline.PipeContextRunnable.run(PipeConte
xtRunnable.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(Ac
tivityServerWrapper.java:1330)
at
oracle.portlet.client.techimpl.wsrp.WSRPGetMarkupPipe.execute(WSRPGetMar
kupPipe.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_Fa
ult_SOAPSerializer.deserializeDetail(WSRP_v1_Markup_PortType_getMarkup_F
ault_SOAPSerializer.java:269)
at
oracle.j2ee.ws.common.encoding.SOAPFaultInfoSerializer.doDeserializeSOAP
11(SOAPFaultInfoSerializer.java:132)
at
oracle.j2ee.ws.common.encoding.SOAPFaultInfoSerializer.doDeserialize(SOA
PFaultInfoSerializer.java:94)
at
oracle.j2ee.ws.common.encoding.ObjectSerializerBase.deserialize(ObjectSe
rializerBase.java:180)
at
oracle.j2ee.ws.common.encoding.ReferenceableSerializerImpl.deserialize(R
eferenceableSerializerImpl.java:147)
at
oracle.portlet.wsrp.v1.soap.runtime.WSRP_v1_Markup_Binding_SOAP_Stub._re
adBodyFaultElement(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.get
Markup(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.x
sd
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</para
m-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-n
ame>
<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</servl
et-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.