Chris,

Using Oracle's bridge and ADFm, you need to add Oracle's 10.1.3.2 lifecycle listeners to your portlet.xml. This "should" work, although the Proof of Concept for Trinidad was used with JDeveloper 11 so I haven't actually tested this out. I DO know that, for 11, Oracle requires the AdfFaces Richclient framework for bindings to work properly, but you can certainly use Trinidad as your renderkit since it's just an extension of Trinidad.

Scott

Innes, Chris wrote:

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.


Reply via email to