13 Replies Latest reply: Oct 14, 2011 6:14 PM by Sverker Abrahamsson RSS

PB3 Beta 1 + Richfaces 4 + Liferay 6

Gofio Code Newbie

I was able to create a simple portlet with this:

 

  • Liferay 6.0.4
  • RichFaces 4.0.0
  • JBoss PortletBridge 3.0.0 Beta 1

 

All deployed in Glassfish v2.2 and also tested in GlassFish v3

 

I can install and open the portlet in Liferay, however, the styles for richfaces are not loaded and ajax is not working. In this portlet we have a tabpanel that are not shown correctly. It looks like richfaces resources (javasxcripts, css files...) are not loaded.

 

As far as I know PortletBridge 3 will be tested with all Portal-2.0 implementations, including Liferay; and should pass JSR-329 poertletbridge spec... So the question is: I'm doing anything wrong or is a problem of the portletbridge? Do you know any solution for this?

 

Any help will be appreciated!!

 

Thanks in advance!

 

jGofio

  • 1. Re: PB3 Beta 1 + Richfaces 4 + Liferay 6
    Gofio Code Newbie

    In order to solve the style we need to put <h:head> instead of <head>

     

    However, the ajax isn't still working!

  • 3. Re: PB3 Beta 1 + Richfaces 4 + Liferay 6
    joodie B Newbie

    Thanks very much for your work! Hopefully this patches will be included in the svn of the PortletBridge and RichFaces as soon as possible!

    Maybe Wesley Hales or somebody else from PortletBridge/RichFaces team can give us a statement, when they are going to patch thes bugs!?

  • 4. Re: PB3 Beta 1 + Richfaces 4 + Liferay 6
    Gofio Code Newbie

    Thank you very much for your work and for your contribution to the community!!

     

    I will try it and let you know the results!!

  • 5. Re: PB3 Beta 1 + Richfaces 4 + Liferay 6
    Gofio Code Newbie

    Hi Balazs,

     

    I have test your sample portlet following your instructions. I try with liferay-portal-glassfish-6.0.6 (LR 6.0.6 bundle with GFv3.0.1) but the portlet isn't deployed.

     

    When I go to "install more applications" > "upload" file and click install button The portlet fails to deploy and throws some error/exceptions... basically these ones:

     

    [#|2011-07-01T07:43:29.718+0000|WARNING|glassfish3.0.1|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common|_ThreadID=31;_ThreadName=Thread-1;|Error in annotation processing: java.lang.NoClassDefFoundError: org/springframework/transaction/PlatformTransactionManager|#]

     

     

    [#|2011-07-01T07:43:29.781+0000|SEVERE|glassfish3.0.1|org.apache.catalina.core.ContainerBase|_ThreadID=31;_ThreadName=Thread-1;|ContainerBase.addChild: start:

    org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: javax.servlet.ServletException: com.sun.enterprise.container.common.spi.util.InjectionException: Error creating managed object for class com.sun.faces.application.ServletContextSensitiveSingletonStore

              at org.apache.catalina.core.StandardContext.start(StandardContext.java:5232)

              at com.sun.enterprise.web.WebModule.start(WebModule.java:499)

              at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:928)

              at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:912)

              at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:694)

              at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1947)

              at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1619)

              at com.sun.enterprise.web.WebApplication.start(WebApplication.java:90)

              at org.glassfish.internal.data.EngineRef.start(EngineRef.java:126)

              at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:241)

              at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:236)

              at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:339)

              at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)

              at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)

              at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:310)

              at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)

              at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)

              at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)

              at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)

              at org.glassfish.deployment.autodeploy.AutoOperation.run(AutoOperation.java:141)

              at org.glassfish.deployment.autodeploy.AutoDeployer.deploy(AutoDeployer.java:573)

              at org.glassfish.deployment.autodeploy.AutoDeployer.deployAll(AutoDeployer.java:459)

              at org.glassfish.deployment.autodeploy.AutoDeployer.run(AutoDeployer.java:391)

              at org.glassfish.deployment.autodeploy.AutoDeployer.run(AutoDeployer.java:376)

              at org.glassfish.deployment.autodeploy.AutoDeployService$1.run(AutoDeployService.java:195)

              at java.util.TimerThread.mainLoop(Timer.java:512)

              at java.util.TimerThread.run(Timer.java:462)

    Caused by: java.lang.IllegalArgumentException: javax.servlet.ServletException: com.sun.enterprise.container.common.spi.util.InjectionException: Error creating managed object for class com.sun.faces.application.ServletContextSensitiveSingletonStore

              at org.apache.catalina.core.StandardContext.addListener(StandardContext.java:2659)

              at org.apache.catalina.core.StandardContext.addApplicationListener(StandardContext.java:1900)

              at com.sun.enterprise.web.TomcatDeploymentConfig.configureApplicationListener(TomcatDeploymentConfig.java:277)

              at com.sun.enterprise.web.TomcatDeploymentConfig.configureWebModule(TomcatDeploymentConfig.java:136)

              at com.sun.enterprise.web.WebModuleContextConfig.start(WebModuleContextConfig.java:277)

              at com.sun.enterprise.web.WebModuleContextConfig.lifecycleEvent(WebModuleContextConfig.java:176)

              at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)

              at org.apache.catalina.core.StandardContext.start(StandardContext.java:5224)

              ... 26 more

    Caused by: javax.servlet.ServletException: com.sun.enterprise.container.common.spi.util.InjectionException: Error creating managed object for class com.sun.faces.application.ServletContextSensitiveSingletonStore

              at org.apache.catalina.core.StandardContext.createListener(StandardContext.java:2769)

              at org.apache.catalina.core.StandardContext.loadListener(StandardContext.java:4719)

              at com.sun.enterprise.web.WebModule.loadListener(WebModule.java:1583)

              at org.apache.catalina.core.StandardContext.addListener(StandardContext.java:2656)

              ... 33 more

    Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Error creating managed object for class com.sun.faces.application.ServletContextSensitiveSingletonStore

              at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.createManagedObject(InjectionManagerImpl.java:312)

              at com.sun.enterprise.web.WebContainer.createListenerInstance(WebContainer.java:741)

              at com.sun.enterprise.web.WebModule.createListenerInstance(WebModule.java:1958)

              at org.apache.catalina.core.StandardContext.createListener(StandardContext.java:2767)

              ... 36 more

    Caused by: java.lang.NoSuchMethodException: com.sun.faces.application.ServletContextSensitiveSingletonStore.<init>()

              at java.lang.Class.getConstructor0(Class.java:2706)

              at java.lang.Class.getConstructor(Class.java:1657)

              at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.createManagedObject(InjectionManagerImpl.java:301)

              ... 39 more

    |#]

     

     

    Did you face this problems??

     

    I work around the problem of the NoClassDefFoundError: org/springframework/transaction/PlatformTransactionManager adding some spring jars to the domain/lib... but I can't solve the second exception... maybe is a problem with GF jsf implementations (the portlet has a different one than GFv3)? Did you solve it?

     

    thanks!!

  • 6. Re: PB3 Beta 1 + Richfaces 4 + Liferay 6
    Balazs Zsoldos Newbie

    Hi,

     

    I used JSF 2.1 when I tested with portletbridge. Glassfish 3.0.1 has JSF 2.0.2 that does not work with the provided patch. I think you have two possibilities:

     

    - in the war file WEB-INF/sun-web.xml you must define that the webapp uses bundled JSF (the one that is in the war file 2.1)

    - Upgrade to Glassfish 3.1 and remove JSF jar files from the war.

     

    You also have to replace the .class file in portlet-impl.jar that is mentioned in the README.txt.

     

    I guess the nosuchmethoderror is due to the reason that glassfish has 2.0.2 JSF and the war contains 2.1 and the calling function is from one of the versions and the called class is in the other version.

     

    You do not have to care about the Spring exception as the portlet deploys without a problem even if the exception comes. It is because in one of the jar files that liferay adds during deployment there is a class that contains a Spring based annotation and load time weaving tries to use it.

     

    Regards,

    Balazs Zsoldos

  • 7. Re: PB3 Beta 1 + Richfaces 4 + Liferay 6
    Gofio Code Newbie

    Hi Balazs,

     

    I downloaded GF 3.1 and deployed on it LR 6.0.6 with your path and voala! Your portlet is deployed without problems and it can be opened!!

     

    The echo, the calendar and the SayHello! button work but the Back button (on the second page) doesn't work, when I click on it nothing happens...

     

    Any clues?

     

    Do you think that this stack (with your patches for LR, RF and portletbridge) can be used for production??

     

    Thanks once more!

  • 8. Re: PB3 Beta 1 + Richfaces 4 + Liferay 6
    Balazs Zsoldos Newbie

    Hi,

     

    I guess (I have not tested it yet) the problem is that on the page hello.xhtml there is no execute="@form" attribute in f:ajax element. I created the sample with a4j components first and than replaced with normal ajax tags. I may not have tested it well enough with the last version that I uploaded. I will fix the sample somewhen in the next days.

     

    We started to replace our rf 3.3.3 portlets to rf 4 portlets in our projects however none of them are in production yet. What I can say is that till now we managed to migrate all of our pages and they passed the stress tests as well however sometimes it was really a headache to find workarounds for special problems like:

    - No rich:columns and rich:tabs in 4.0 so it is not possible to create tabs and columns dynamically

    - ui:repeat and c:foreach does not work inside rich:tabpanel and rich:dataTable anymore

    - a4j status cannot must be the first element in each page (and not in a jsf 2 composite element (facelets taglib works as it does not generate special clientId)) if someone uses a4j:status at all otherwise in case of a page redirect the status element will not be found. This might be fixed in a couple of months as I have some time.

    - Some other special cases

     

    My opinion is that everybody should use this patch and these jars for their own risk. When I find a bug during our work I will always publish the patches to the jira system that it belongs and will replace the version in the liferay community plugin.

     

    Regards,

    Balazs

  • 9. Re: PB3 Beta 1 + Richfaces 4 + Liferay 6
    Gofio Code Newbie

    Hi Balazs,

     

    thank you for your reflexion...

     

    Related to the Back buttom, it works with Chrome as it is, but fails with Firefox 5.0 and IE 8.0. However, if I remove the calendar component from index.xhtml then the button works with all the browsers. It looks like the library for the rich components produces some kind of problem with Firefox and IE.

     

    regards!

    Gofio

  • 10. Re: PB3 Beta 1 + Richfaces 4 + Liferay 6
    matthew_k Newbie

    Download doesn´t work.

     

    Where can i get a working example?

     

    Regards!

  • 11. Re: PB3 Beta 1 + Richfaces 4 + Liferay 6
    Balazs Zsoldos Newbie

    http://www.liferay.com/downloads/liferay-portal/community-plugins/-/software_catalog/products/9386716

     

    Copy and paste the "direct download link" you find there to your browser as Yahoo UI scripts kill all "a href" with some onclick events.

  • 12. Re: PB3 Beta 1 + Richfaces 4 + Liferay 6
    matthew_k Newbie

    Thanks a lot, now it works

  • 13. Re: PB3 Beta 1 + Richfaces 4 + Liferay 6
    Sverker Abrahamsson Novice

    Hi

    there is an issue in this sample as it contains jsf-2.1.0 api and impl jars. That vesion doesn't work on anything but glassfish so to be able to deploy the sample on JBoss I upgraded jsf-api and jsf-impl to 2.1.3_01. This is the bug report: http://java.net/jira/browse/JAVASERVERFACES-1937