1 2 3 4 Previous Next 59 Replies Latest reply on Mar 7, 2014 3:00 AM by morellik

    Richfaces4 + glassfish 3 performance

    morellik

      I wrote an application using java 6, glassfish 3 and richfaces 4.3.4. At work all works fine, but when I try from my home using a 20MB ADSL network all pages seems to be refreshed by zero every time I try to access them.

       

      I using a template with 3 areas: top, content and footer. In the top I load the logo and some menus.

      When I choose a menu item, the page is completely refreshed, sometimes I have a blank page between a menu choice and the relative response. Also in a registration form I note a refresh to display error for requested fields leaved empty. What I've to check to solve or mitigate this annoying problem?

        • 1. Re: Richfaces4 + glassfish 3 performance
          morellik

          I add the following in web.xml and I have better performance. But the page seems to be reload each time. Why richfaces has to repaint the menus each time?

           

          <context-param>

                  <param-name>com.sun.faces.writeStateAtFormEnd</param-name>

                  <param-value>false</param-value>

              </context-param>

              <context-param>

                  <param-name>javax.faces.FACELETS_BUFFER_SIZE</param-name>

                  <param-value>65536</param-value>

              </context-param>

              <context-param>

                  <param-name>org.richfaces.push.jms.enabled</param-name>

                  <param-value>true</param-value>

              </context-param>

               <context-param>

                  <param-name>org.richfaces.enableControlSkinning</param-name>

                  <param-value>false</param-value>

              </context-param>

              <context-param>

                  <param-name>org.richfaces.enableControlSkinningClasses</param-name>

                  <param-value>false</param-value>

              </context-param>

              <context-param>

                  <param-name>org.richfaces.resourceOptimization.enabled</param-name>

                  <param-value>true</param-value>

              </context-param>

              <context-param>

                  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>

                  <param-value>server</param-value>

              </context-param>

              <context-param>

                  <param-name>org.richfaces.LoadScriptStrategy</param-name>

                  <param-value>ALL</param-value>

              </context-param>

              <context-param>

                  <param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>

                  <param-value>false</param-value>

              </context-param>

              <context-param>

                  <param-name>com.sun.faces.responseBufferSize</param-name>

                  <param-value>500000</param-value>

              </context-param>

              <context-param>

                  <param-name>facelets.REFRESH_PERIOD</param-name>

                  <param-value>-1</param-value>

              </context-param>

              <context-param>

                  <param-name>org.ajax4jsf.xmlparser.ORDER</param-name>

                  <param-value>NONE,NEKO,TIDY</param-value>

              </context-param>

          • 2. Re: Richfaces4 + glassfish 3 performance
            bleathem

            Have you tried other containers?  Do you get similar performances there too?

            • 3. Re: Richfaces4 + glassfish 3 performance
              morellik

              No, I haven't experience using other container.

              • 4. Re: Richfaces4 + glassfish 3 performance
                bleathem

                Can you try your use case out on JBoss EAP?  If you have a similar performance problem in both containers than it will give us a better idea of where to dig in.

                • 5. Re: Richfaces4 + glassfish 3 performance
                  morellik

                  I'm trying to do it, but is very hard to deploy an existing application to JBOSS EAP. I'm having a lot of troubles.

                  • 6. Re: Richfaces4 + glassfish 3 performance
                    arungupta

                    Can you highlight the problems that you are facing while porting from GlassFish to JBoss EAP ?

                    • 7. Re: Richfaces4 + glassfish 3 performance
                      morellik

                      I don't know JBOSS (but I would like to learn it ). So I tried to deploy brutally the war file, but I encountered the first error:

                      10:22:20,995 ERROR [org.jboss.as.server] (management-handler-thread - 1) JBAS015870: Deploy of deployment "EMBOWorkshop.war" was rolled back with the following failure message:
                      {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"EMBOWorkshop.war\".FIRST_MODULE_USE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"EMBOWorkshop.war\".FIRST_MODULE_USE: JBAS018733: Failed to process phase FIRST_MODULE_USE of deployment \"EMBOWorkshop.war\"
                          Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011434: Persistence provider module load error org.eclipse.persistence (class org.eclipse.persistence.jpa.PersistenceProvider)
                          Caused by: org.jboss.modules.ModuleNotFoundException: org.eclipse.persistence:main"}}

                       

                      The eclipselink library is not installed. So I search how to install new libraries but someone write to put its in modules, someone else write to put its in standalone/lib. I don't know where I've to put the JAR file.

                      After that under Glassfish I use JDBC Realm authentication that it's easy to setup. Under JBOSS isn't so easy, there isn't a graphical way to do that, I've to create an XML file and also for that searching to internet I found different way: conf/server.xml or conf/login-config.xml. Which one? Where is conf folder?

                       

                      Thanks for your help

                      • 8. Re: Richfaces4 + glassfish 3 performance
                        morellik

                        Now, using NetBeans I tried to set JBoss instead of Glassfish. I'm able to add eclipselink and postgresql driver to JBoss. But now I've other problems:

                         

                        /home/morelli/NetBeansProjects/IDPbyNMRMeeting/src/java/Tools/FileDownload.java:26: cannot find symbol
                        symbol  : method responseReset()
                        location: class javax.faces.context.ExternalContext
                                ec.responseReset(); // Some JSF component library or some Filter might have set some headers in the buffer beforehand. We want to get rid of them, else it may collide.
                        /home/morelli/NetBeansProjects/IDPbyNMRMeeting/src/java/Tools/FileDownload.java:27: cannot find symbol
                        symbol  : method getMimeType(java.lang.String)
                        location: class javax.faces.context.ExternalContext
                                ec.setResponseContentType(ec.getMimeType(filePath + filename)); // Check http://www.iana.org/assignments/media-types for all types. Use if necessary ExternalContext#getMimeType() for auto-detection based on filename.
                        /home/morelli/NetBeansProjects/IDPbyNMRMeeting/src/java/Tools/FileDownload.java:28: cannot find symbol
                        symbol  : method setResponseContentLength(int)
                        location: class javax.faces.context.ExternalContext
                                ec.setResponseContentLength((int) (long) fsize); // Set it with the file size. This header is optional. It will work if it's omitted, but the download progress will be unknown.
                        /home/morelli/NetBeansProjects/IDPbyNMRMeeting/src/java/Tools/FileDownload.java:29: cannot find symbol
                        symbol  : method setResponseHeader(java.lang.String,java.lang.String)
                        location: class javax.faces.context.ExternalContext
                                ec.setResponseHeader("Content-Disposition", "attachment; filename=\"" + filename + "\""); // The Save As popup magic is done here. You can give it any file name you want, this only won't work in MSIE, it will use current request URL as file name instead.
                        /home/morelli/NetBeansProjects/IDPbyNMRMeeting/src/java/Tools/FileDownload.java:32: cannot find symbol
                        symbol  : method getResponseOutputStream()
                        location: class javax.faces.context.ExternalContext
                                    OutputStream output = ec.getResponseOutputStream();
                        /home/morelli/NetBeansProjects/IDPbyNMRMeeting/src/java/Beans/Auth.java:72: cannot find symbol
                        symbol  : method invalidateSession()
                        location: class javax.faces.context.ExternalContext
                                externalContext.invalidateSession();
                        /home/morelli/NetBeansProjects/IDPbyNMRMeeting/src/java/Beans/ParticipantBean.java:444: cannot find symbol
                        symbol  : method invalidateSession()
                        location: class javax.faces.context.ExternalContext
                                context.getExternalContext().invalidateSession();
                        Note: /home/morelli/NetBeansProjects/IDPbyNMRMeeting/src/java/Beans/ParticipantBean.java uses or overrides a deprecated API.
                        Note: Recompile with -Xlint:deprecation for details.

                         

                        In the NetBeans I see the following ExternalContext classes not found:

                         

                        ec.responseReset();
                        ec.setResponseContentType(ec.getMimeType(filePath + filename)); ExternalContext#getMimeType() for auto-detection based on filename.
                        ec.setResponseContentLength((int) (long) fsize);
                        ec.setResponseHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");

                         


                        OutputStream output = ec.getResponseOutputStream();
                        • 9. Re: Richfaces4 + glassfish 3 performance
                          bleathem

                          Going back to the original problem, are you using AJAX to partially render a portion of the page?  Can you post some sample code of your template and one of your pages?

                          • 10. Re: Re: Richfaces4 + glassfish 3 performance
                            morellik

                            This is the registration page. In this page I don't use AJAX.

                             

                            
                            
                             <rich:panel header="New Registration" style="width:800px;">
                                                    <h:form id="formID">
                                                        <rich:panel header="User Information" style="width:700px;">
                            
                                                            <h:panelGrid columns="3">
                                                                <h:outputText value="First Name and Middle Name Initial: " />
                                                                <h:inputText id="firstname" value="#{createUser.user.firstName}" label="click to enter your firstname" required="true" requiredMessage="Firstname is required" >
                                                                    <f:validateLength minimum="3" />
                                                                </h:inputText>
                                                                <rich:message for="firstname" ajaxRendered="true" />
                                                                <h:outputText value="Lastname: " />
                                                                <h:inputText id="lastname" value="#{createUser.user.lastName}" label="click to enter your lastname" required="true" requiredMessage="Lastname is required" >
                                                                    <f:validateLength minimum="3" />
                                                                </h:inputText>
                                                                <rich:message for="lastname" ajaxRendered="true" />
                                                                <h:outputText value="Email: " />
                                                                <h:inputText id="email" value="#{createUser.user.email}" label="click to enter your email" required="true" requiredMessage="Email is required" >
                                                                    <f:validateLength minimum="5" />
                                                                    <f:validateRegex
                                                                        pattern="^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$">
                                                                    </f:validateRegex>
                                                                </h:inputText>
                                                                <rich:message for="email" ajaxRendered="true" />
                                                                <h:outputText value="Institution/Company: " />
                                                                <h:inputText id="institution" value="#{createUser.user.university}" label="click to enter your Institution" required="true" requiredMessage="Institution is required" >
                                                                    <f:validateLength minimum="3" />
                                                                </h:inputText>
                                                                <rich:message for="institution" ajaxRendered="true" />
                                                                <h:outputText value="Select Registration Type: " />
                                                                <h:selectOneMenu id="regtype" value="#{createUser.user.participantTypo}" required="true" requiredMessage="Please select a type." >
                                                                    <f:selectItem itemValue="#{null}" itemLabel="-- select one --" />
                                                                    <f:selectItem itemValue="PARTICIPANT" itemLabel="Participant"  />
                                                                    <f:selectItem itemValue="STUDENT" itemLabel="Student" />
                                                                    <f:selectItem itemValue="GIDRM" itemLabel="GIDRM" />
                                                                    <f:selectItem itemValue="INVITEDSPEAKER" itemLabel="Invited Speaker"  />
                                                                    <f:selectItem itemValue="ORGANIZER" itemLabel="Organizer" />
                                                                </h:selectOneMenu>
                                                                <rich:message for="regtype" ajaxRendered="true" />
                            
                                                                <h:outputText value="Fullname of accompaning person (*): " />
                                                                <h:inputText id="accpersons" value="#{createUser.user.accompaning}" label="click to enter your accompaning person" />
                                                                <h:outputText value="" />
                            
                                                                <h:outputText value="(*) For more than one person, separate each one by comma." />
                            
                            
                                                            </h:panelGrid>
                                                        </rich:panel>
                            
                                                        <rich:panel header="Login Information" style="width:700px;">
                                                            <h:panelGrid>
                                                                <h:outputText value="Please choose a password with at least 6 characters (case sensitive). You
                                                                              will need this password later (with your email address) to proceed with
                                                                              credit card payment or review your payment status. " />       
                            
                                                            </h:panelGrid>
                                                            <h:panelGrid columns="3">
                                                                <h:outputText value="Password: " />
                                                                <h:inputSecret  id="password" value="#{createUser.user.password}"  required="true" requiredMessage="Password is required" >
                                                                    <f:validateLength minimum="6" />
                                                                </h:inputSecret>
                                                                <rich:message for="password" ajaxRendered="true" />
                                                            </h:panelGrid>
                                                        </rich:panel>
                                                        <rich:panel header="Privacy Policy" style="width:700px;">
                                                            <h:panelGrid >
                            
                                                                <h:outputText value="According to the Italian law 196/2003, I authorize the EMBO Workshop organizers to use my personal data 
                                                                              to finalize my registration to the Workshop. I am aware that,
                                                                              without my given consent, registration cannot be completed." />
                                                                <h:panelGrid columns="3">
                                                                    <h:outputText value="Accept" /> <h:selectBooleanCheckbox id="Privacy" value="#{createUser.user.acceptPrivacy}" required="true" requiredMessage="You have to accept" >
                                                                        <f:validator validatorId="requiredCheckboxValidator" />
                                                                    </h:selectBooleanCheckbox>
                                                                    <rich:message for="Privacy" ajaxRendered="true" />
                                                                </h:panelGrid>
                                                            </h:panelGrid>
                                                        </rich:panel>
                                                        <rich:notifyMessages stayTime="2000" nonblocking="true" />
                                                        <h:commandButton value="Submit" action="#{createUser.createNewUser()}"/>
                                                    </h:form>
                                                </rich:panel>
                            
                               
                            

                             

                             

                            I noted another thing. If I submit an empty form I receive all error messages, if I press the browser back button I go in the form without error messages,

                            as if they were the system renders two different pages.
                            The following is the template:
                            
                             <h:body>
                                    <ui:insert name="top">
                                        <div id="header">  
                                            <div id="top">
                                                <div id="wo"></div>
                                                <h1>Magnetic resonance for cellular structural biology - Credit card payment portal</h1>
                                                <p>1 – 6 June 2014 | Principina Terra (Grosseto), Italy </p>
                                            </div>
                                        </div>
                            
                                        <h:form>
                                            <rich:toolbar height="26px">
                                                <ui:include src="../common/menuDashboard.xhtml" />
                                                <h:panelGroup rendered="#{request.isUserInRole('SUPERADMINISTRATOR')||request.isUserInRole('ADMINISTRATOR')}" >
                                                    <ui:include src="../common/menuAdmin.xhtml"  />
                                                </h:panelGroup>
                                                <ui:include src="../common/menuPayment.xhtml" />
                                            </rich:toolbar>
                                        </h:form>
                                        <div id="downbot"></div>
                                    </ui:insert>
                            
                                    <div id="content" class="center_content">
                                        <div id="main">
                                            <ui:insert name="content">
                                                <center>
                                                    <rich:panel header="Welcome to EMBO Workshop Credit Card Payment Portal" style="width:800px;">
                                                        <p>
                                                            Dear #{participantBean.principalData.firstName} #{participantBean.principalData.lastName} Welcome to the EMBO Workshop Credit Card Payment Portal
                                                        </p>
                                                        <h:form>
                                                            <rich:panel>
                                                                The following are your data: <br />
                                                                <h:panelGrid columns="2">
                                                                    <h:outputText value="Firstname: " />
                                                                    #{participantBean.principalData.firstName} 
                                                                    <h:outputText value="Lastname: " />
                                                                    #{participantBean.principalData.lastName} 
                                                                    <h:outputText value="Email: " />
                                                                    #{participantBean.principalData.email} 
                                                                    <h:outputText value="Organization: " />
                                                                    #{participantBean.principalData.university}
                                                                    <h:outputText value="Amount To Pay: " />
                                                                    #{participantBean.principalData.amountToPay} Euro
                                                                    <h:outputText value="Payed: " />
                                                                           #{participantBean.principalData.payed}
                                                                 
                                                                </h:panelGrid>
                                                                <h:commandButton value="Proceed to Pay" action="#{participantBean.paymentPrepare()}" rendered="#{!participantBean.principalData.payed and participantBean.principalData.amountToPay gt 0}" />
                                                            </rich:panel>
                                                        </h:form>
                                                        If you have troubles using this application send an email to morelli AT cerm.unifi.it
                                                        and explain the problems you are experiencing.
                            
                                                        <rich:notifyMessages stayTime="2000" nonblocking="true" />
                                                    </rich:panel>
                                                </center>
                                            </ui:insert>
                                        </div>
                                    </div>
                            
                                    <div id="bottom">
                                        <ui:insert name="bottom">
                                            <rich:toolbar height="25px">
                                                Developer Enrico Morelli@CERM
                                            </rich:toolbar>
                                        </ui:insert>
                                    </div>
                            
                                </h:body>
                            
                            

                             

                             

                            And the following is one of the menu

                             

                             <h:body>
                                    <ui:composition>
                                        <rich:dropDownMenu>
                                            <f:facet name="label">
                                                <h:panelGroup>
                                                    <h:graphicImage value="../resources/images/users.png" styleClass="pic" alt="User" />
                                                    <h:outputText value="Users" />
                                                </h:panelGroup>
                                            </f:facet>
                                            <rich:menuItem label="Full List" action="#{participantBean.listUser()}" icon="../resources/images/users.png" />
                                            <rich:menuItem label="To Pay List" action="#{participantBean.toPayListUser()}" icon="../resources/images/users.png" />
                                            <rich:menuItem label="Payed List" action="#{participantBean.payedListUser()}" icon="../resources/images/users.png" />
                                            
                                        </rich:dropDownMenu>
                                    </ui:composition>
                                </h:body>
                            
                            • 11. Re: Richfaces4 + glassfish 3 performance
                              bleathem

                              You will have to use AJAX if you want to avoid entire page refreshes.  Google can help you figure out what to do here.

                              • 12. Re: Re: Richfaces4 + glassfish 3 performance
                                morellik

                                Brian Leathem wrote:

                                 

                                You will have to use AJAX if you want to avoid entire page refreshes.  Google can help you figure out what to do here.

                                 

                                Also for the menus? For me is a strange thing, because I developed a lot of web application in Python and I never had these problems.  I thought that once loaded the template with menus this acted as a static page. I expected that only the body of the page was refreshed depending of a menu choice.

                                I'll  search in google to find how use AJAX in every page.

                                • 13. Re: Re: Re: Richfaces4 + glassfish 3 performance
                                  morellik

                                  I tried to set mode="ajax" in the dropdown menu. But some items stops to work. For example, I have a lot of menu items to show a list of users in different states. Only the queries are different but the JSF that show the results is the same. So only the first item works, the other seems to be not working or display the same page as the render didn't work. Other items permits the download of files, with mode="ajax" doesn't works.

                                   

                                  Like you see below, I tried different modes (naturally I repeat the modes for every item except for the last one):

                                    <rich:dropDownMenu>
                                                      <f:facet name="label">
                                                          <h:panelGroup>
                                                              <h:graphicImage value="../resources/images/users.png" styleClass="pic" alt="User" />
                                                              <h:outputText value="Users" />
                                                          </h:panelGroup>
                                                      </f:facet>
                                                      <rich:menuItem label="Full List" action="#{participantBean.listUser()}" icon="../resources/images/users.png" mode="ajax" />
                                                      <rich:menuItem label="To Pay List" action="#{participantBean.toPayListUser()}" icon="../resources/images/users.png"  mode="ajax" render="dataTable" />
                                                      <rich:menuItem label="Payed List" action="#{participantBean.payedListUser()}" icon="../resources/images/users.png"  />
                                                      <rich:menuItem label="Uploaded Abstract List" action="#{participantBean.uploadedAbstract()}" icon="../resources/images/users.png"  />
                                                      <rich:menuItem label="Dietary List" action="#{participantBean.dietaryList()}" icon="../resources/images/users.png"  />
                                                      <rich:menuItem label="Download CSV Participant List" action="#{participantBean.downloadCSV()}" icon="../resources/images/document-excel-csv.png" mode="server"   />
                                                  </rich:dropDownMenu>
                                  

                                   

                                  Follow the JSF used to show the results:

                                   

                                   <rich:panel header="List User (# #{participantBean.userlist.size()})" style="width:1096px;">
                                                  <h:form id="formID">
                                                      <rich:dataTable id="dataTable" value="#{participantBean.userlist}" var="n" rowClasses="odd-row, even-row"
                                                                      styleClass="stable"
                                                                      rows="10"
                                                                      >
                                                          <rich:column sortBy="#{n.lastName}" id="lastname" sortOrder="#{participantBean.lastnameOrder}"
                                                                       filterExpression="#{fn:containsIgnoreCase(n.lastName,
                                                                                           filteringBean.lastNameFilterString)}"
                                                                       >
                                                              <f:facet name="header"> 
                                                                  <a4j:commandLink value="User" render="dataTable" action="#{participantBean.sortByLastname}" />
                                                                    
                                                                  <h:inputText value="#{filteringBean.lastNameFilterString}">
                                                                      <a4j:ajax event="change" render="dataTable" execute="@this" />
                                                                  </h:inputText>
                                  
                                                              </f:facet>
                                                              #{n.firstName} #{n.lastName}
                                                          </rich:column>
                                                          <rich:column  sortBy="#{n.email}" id="email" sortOrder="#{participantBean.emailOrder}"
                                                                        filterExpression="#{fn:containsIgnoreCase(n.email,
                                                                                            filteringBean.emailFilterString)}">
                                                              <f:facet name="header">
                                                                  <a4j:commandLink execute="@this" value="Email" render="dataTable" action="#{participantBean.sortByEmail}" >
                                                                      <f:param name="sortProperty" value="email" />
                                                                  </a4j:commandLink>
                                                                    
                                                                  <h:inputText value="#{filteringBean.emailFilterString}">
                                                                      <a4j:ajax event="change" render="dataTable" execute="@this" />
                                                                  </h:inputText>
                                                              </f:facet>
                                                              #{n.email}
                                                          </rich:column>
                                                          <rich:column>
                                                              <f:facet name="header">University</f:facet>
                                                              #{n.university} 
                                                          </rich:column>
                                                          <rich:column>
                                                              <f:facet name="header">Amount to Pay</f:facet>
                                                              #{n.amountToPay}
                                                          </rich:column>
                                                          <rich:column>
                                                              <f:facet name="header">Payed</f:facet>
                                                              #{n.payed}
                                                          </rich:column>
                                                          <rich:column rendered="#{!participantBean.dietaryDetail}">
                                                              <f:facet name="header">Uploaded Abstract</f:facet>
                                                              <h:outputText value="#{n.abstract_.id > 0? 'true':'false'}" />
                                                          </rich:column>
                                                          <rich:column>
                                                              <f:facet name="header">Participant Typo</f:facet>
                                                              #{n.participantTypo}
                                                          </rich:column>
                                                          <rich:column rendered="#{participantBean.dietaryDetail}">
                                                              <f:facet name="header">Dietary Details</f:facet>
                                                              #{n.dietary_details}
                                                          </rich:column>
                                                          <rich:column >
                                                              <f:facet name="header">Action</f:facet>
                                                              <h:commandLink  action="#{participantBean.removeUser(n.email)}" rendered="#{request.isUserInRole('SUPERADMINISTRATOR') || request.isUserInRole('ADMINISTRATOR')}" onclick="return confirm('Are you sure?');" >
                                                                  <acronym title="Remove User">
                                                                      <h:graphicImage id="userRemove" 
                                                                                      name="user--minus.png"
                                                                                      library="images"
                                                                                      alt="Remove"
                                                                                      />
                                                                  </acronym>
                                                              </h:commandLink>
                                                                
                                                              <h:commandLink  action="#{participantBean.modifyUser(n.email)}" rendered="#{request.isUserInRole('SUPERADMINISTRATOR') || request.isUserInRole('ADMINISTRATOR')}">
                                                                  <acronym title="Modify User">
                                                                      <h:graphicImage id="userModify" 
                                                                                      name="user--pencil.png"
                                                                                      library="images"
                                                                                      alt="Modify"
                                                                                      /> 
                                                                  </acronym>
                                                              </h:commandLink>
                                                                
                                                              <h:commandLink  action="#{participantBean.fullViewUser(n.email)}" rendered="#{request.isUserInRole('SUPERADMINISTRATOR') || request.isUserInRole('ADMINISTRATOR')}">
                                                                  <acronym title="View Full Informations">
                                                                      <h:graphicImage id="userFullview" 
                                                                                      name="magnifier-zoom.png"
                                                                                      library="images"
                                                                                      alt="FullView"
                                                                                      /> 
                                                                  </acronym>
                                                              </h:commandLink>
                                                                
                                                              <h:commandLink  action="#{abstractBean.downloadAbstract(n.abstract_.id)}" rendered="#{n.abstract_.id > 0}">
                                                                  <acronym title="Download Abstract">
                                                                      <h:graphicImage id="abstractDownload" 
                                                                                      name="document-text-image.png"
                                                                                      library="images"
                                                                                      alt="Abstract"
                                                                                      /> 
                                                                  </acronym>
                                                              </h:commandLink>
                                                            
                                                          </rich:column>
                                                          <f:facet name="footer">
                                                              <rich:dataScroller />
                                                          </f:facet>
                                  
                                                      </rich:dataTable>
                                  
                                                  </h:form>
                                  
                                  • 14. Re: Richfaces4 + glassfish 3 performance
                                    arungupta

                                    Does your app specifically rely on EclipseLink ? If not, then you can remove the persistence-provider from persistence.xml and that should make further progress.

                                     

                                    Have you tried copying your JAR in standalone/lib/ext ?

                                    1 2 3 4 Previous Next