You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Jesse Kuhnert (JIRA)" <ta...@jakarta.apache.org> on 2006/07/23 04:42:16 UTC

[jira] Updated: (TAPESTRY-1014) java.util.ConcurrentModificationException in portlet when trying to show ArrayList

     [ http://issues.apache.org/jira/browse/TAPESTRY-1014?page=all ]

Jesse Kuhnert updated TAPESTRY-1014:
------------------------------------

    Priority: Major  (was: Critical)

Changing type of issue.

> java.util.ConcurrentModificationException in portlet when trying to show ArrayList
> ----------------------------------------------------------------------------------
>
>                 Key: TAPESTRY-1014
>                 URL: http://issues.apache.org/jira/browse/TAPESTRY-1014
>             Project: Tapestry
>          Issue Type: Bug
>          Components: Framework, Portlet
>    Affects Versions: 4.0.2
>         Environment: apache jestpeed-2.1-dev
>            Reporter: Vitaly Baranovsky
>
> I've writed portlet application with tapestry 4.0.2 (using 
> TapestryApplicationPortlet). I have deployed it to jetspeed-2 portal 
> server. Sometimes exception is rised when some users navigates to my 
> portlet (exception is described bellow). 
> Sorry for my bad English. 
> *** EXCEPTION *** 
> org.apache.hivemind.ApplicationRuntimeException 
> component   $View_0@65b778[View] 
>             context:/WEB-INF/View.page, line 7, column 63 
>             2 
> location          3 <!DOCTYPE page-specification PUBLIC 
>             4   "-//Apache Software Foundation//Tapestry Specification 4.0 
> //EN" 
>             5   "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd"> 
>             6 
>             7 <page-specification 
> class="net.mycompany.portal.news.NewsListData"> 
>             8 
>             9  <component id="newslinelist" type="For"> 
>             10   <binding name="source" value="newslist"/> 
>             11   <binding name="value" value="news"/> 
>             12   <binding name="element" value="literal:tr"/> 
> java.util.ConcurrentModificationException 
> java.util.AbstractList$Itr.checkForComodification(Unknown Source) 
> java.util.AbstractList$Itr.next(Unknown Source) 
> org.apache.tapestry.components.ForBean.renderComponent(ForBean.java:125) 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) 
> org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:92) 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617) 
> org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:275) 
> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:366) 
> org.apache.tapestry.portlet.PortletRendererImpl.renderPage(PortletRendererImpl.java:76) 
> $PortletRenderer_10c7c3c1767.renderPage($PortletRenderer_10c7c3c1767.java) 
> org.apache.tapestry.portlet.PortletHomeService.service(PortletHomeService.java:80) 
> $IEngineService_10c7c3c1751.service($IEngineService_10c7c3c1751.java) 
> org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:66) 
> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:248) 
> org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60) 
> $WebRequestServicer_10c7c3c171f.service($WebRequestServicer_10c7c3c171f.java) 
> $WebRequestServicer_10c7c3c171d.service($WebRequestServicer_10c7c3c171d.java) 
> org.apache.tapestry.portlet.RenderRequestServicerToWebRequestServicerBridge.service(RenderRequestServicerToWebRequestServicerBridge.java:49) 
> $RenderRequestServicer_10c7c3c1717.service($RenderRequestServicer_10c7c3c1717.java) 
> $RenderRequestServicer_10c7c3c1711.service($RenderRequestServicer_10c7c3c1711.java) 
> org.apache.tapestry.portlet.ApplicationPortlet.render(ApplicationPortlet.java:161) 
> org.apache.jetspeed.factory.JetspeedPortletInstance.render(JetspeedPortletInstance.java:102) 
> org.apache.jetspeed.container.JetspeedContainerServlet.doGet(JetspeedContainerServlet.java:230) 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:689) 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574) 
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499) 
> org.apache.jetspeed.container.invoker.ServletPortletInvoker.invoke(ServletPortletInvoker.java:215) 
> org.apache.jetspeed.container.invoker.ServletPortletInvoker.render(ServletPortletInvoker.java:126) 
> org.apache.pluto.PortletContainerImpl.renderPortlet(PortletContainerImpl.java:119) 
> org.apache.jetspeed.container.JetspeedPortletContainerWrapper.renderPortlet(JetspeedPortletContainerWrapper.java:120) 
> org.apache.jetspeed.aggregator.impl.RenderingJobImpl.execute(RenderingJobImpl.java:121) 
> org.apache.jetspeed.aggregator.impl.PortletRendererImpl.renderNow(PortletRendererImpl.java:120) 
> org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.aggregateAndRender(PageAggregatorImpl.java:199) 
> org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.aggregateAndRender(PageAggregatorImpl.java:182) 
> org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.build(PageAggregatorImpl.java:106) 
> org.apache.jetspeed.aggregator.AggregatorValve.invoke(AggregatorValve.java:48) 
> org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:166) 
> org.apache.jetspeed.decoration.DecorationValve.invoke(DecorationValve.java:110) 
> org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:166) 
> org.apache.jetspeed.pipeline.valve.impl.ActionValveImpl.invoke(ActionValveImpl.java:147) 
> org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:166) 
> org.apache.jetspeed.container.ContainerValve.invoke(ContainerValve.java:76) 
> org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:166) 
> org.apache.jetspeed.profiler.impl.ProfilerValveImpl.invoke(ProfilerValveImpl.java:255) 
> org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:166) 
> org.apache.jetspeed.security.impl.LoginValidationValveImpl.invoke(LoginValidationValveImpl.java:159) 
> org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:166) 
> org.apache.jetspeed.security.impl.PasswordCredentialValveImpl.invoke(PasswordCredentialValveImpl.java:149) 
> org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:166) 
> org.apache.jetspeed.localization.impl.LocalizationValveImpl.invoke(LocalizationValveImpl.java:169) 
> org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:166) 
> org.apache.jetspeed.security.impl.AbstractSecurityValve$1.run(AbstractSecurityValve.java:117) 
> java.security.AccessController.doPrivileged(Native Method) 
> javax.security.auth.Subject.doAsPrivileged(Unknown Source) 
> org.apache.jetspeed.security.impl.AbstractSecurityValve.invoke(AbstractSecurityValve.java:111) 
> org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:166) 
> org.apache.jetspeed.container.url.impl.PortalURLValveImpl.invoke(PortalURLValveImpl.java:67) 
> org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:166) 
> org.apache.jetspeed.capabilities.impl.CapabilityValveImpl.invoke(CapabilityValveImpl.java:128) 
> org.apache.jetspeed.pipeline.JetspeedPipeline$Invocation.invokeNext(JetspeedPipeline.java:166) 
> org.apache.jetspeed.pipeline.JetspeedPipeline.invoke(JetspeedPipeline.java:145) 
> org.apache.jetspeed.engine.JetspeedEngine.service(JetspeedEngine.java:214) 
> org.apache.jetspeed.engine.JetspeedServlet.doGet(JetspeedServlet.java:238) 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:689) 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432) 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) 
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) 
> java.lang.Thread.run(Unknown Source) 
> ***** View.html ***** 
> <table cellspacing="2"> 
>       <tr jwcid="newslinelist"> 
>             <td><span jwcid="date">date</span></td> 
>             <td><a href="" jwcid="newsLink"><span 
> jwcid="title">title</span></a></td> 
>       </tr> 
> </table> 
> ***** View.page ***** 
> <?xml version="1.0" encoding="UTF-8"?> 
> <!DOCTYPE page-specification PUBLIC 
>   "-//Apache Software Foundation//Tapestry Specification 4.0//EN" 
>   "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd"> 
> <page-specification class="net.mycompany.portal.news.NewsListData"> 
>       <component id="newslinelist" type="For"> 
>             <binding name="source" value="newslist"/> 
>             <binding name="value" value="news"/> 
>             <binding name="element" value="literal:tr"/> 
>       </component> 
>       <component id="date" type="Insert"> 
>             <binding name="value" value="news.date"/> 
>       </component> 
>       <component id="title" type="Insert"> 
>             <binding name="value" value="news.title"/> 
>       </component> 
>       <component id="newsLink" type="GenericLink"> 
>             <binding name="href" value="news.newsURL"/> 
>       </component> 
> </page-specification> 
> ***** View.java ***** 
> package net.mycompany.portal.news.newslist; 
> import java.sql.Connection; 
> import java.sql.PreparedStatement; 
> import java.sql.ResultSet; 
> import java.sql.SQLException; 
> import java.text.SimpleDateFormat; 
> import java.util.ArrayList; 
> import java.util.Date; 
> import java.util.List; 
> import net.mycompany.portal.utils.DBUtils; 
> import org.apache.tapestry.annotations.InjectObject; 
> import org.apache.tapestry.html.BasePage; 
> import org.apache.tapestry.web.WebRequest; 
> public abstract class NewsListData extends BasePage { 
>     @InjectObject("infrastructure:request") 
>     public abstract WebRequest getWebRequest(); 
>     public String getCurrentDate() { 
>      String curDateStr = getWebRequest().getParameterValue("date"); 
>      if (curDateStr != null) { 
>          curDateStr = curDateStr.trim(); 
>      } else 
>          curDateStr = ""; 
>      return curDateStr; 
>     } 
>     public List getNewslist() { 
>      List<News> newslist = new ArrayList<News>(); 
>      ResultSet rs = null; 
>      PreparedStatement ps = null; 
>      Connection connection = null; 
>      try { 
>          connection = DBUtils.getDB2Connection(); 
>      } catch (Exception e) { 
>          e.printStackTrace(); 
>      } 
>      if (connection != null) { 
>          try { 
>           ps = connection.prepareStatement("select viewfrom,title,identifier from MYCOMPANY.tb_documents where date(viewFrom) = ? order by VIEWFROM"); 
>           ps.setDate(1, DBUtils.StringToSQLDate(getCurrentDate(), "yyyyMMdd")); 
>           rs = ps.executeQuery(); 
>           while (rs.next()) { 
>               newslist.add(new News((rs.getTime(1)).toString(), rs.getString(2), rs.getString(3))); 
>           } 
>          } catch (Exception e) { 
>           e.printStackTrace(); 
>          } finally { 
>           try { 
>               ps.close(); 
>               rs.close(); 
>               connection.close(); 
>           } catch (SQLException e) { 
>               e.printStackTrace(); 
>           } 
>          } 
>      } 
>      return newslist; 
>     } 
>     public abstract News getNews(); 
> } 
> ***** web.xml ***** 
> <!DOCTYPE web-app 
>   PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
>   "http://java.sun.com/dtd/web-app_2_3.dtd"> 
> <web-app> 
>       <display-name>app</display-name> 
>       <servlet> 
>             <servlet-name>ApplicationServlet</servlet-name> 
>             <servlet-class> 
>                   org.apache.tapestry.ApplicationServlet 
>             </servlet-class> 
>       </servlet> 
>       <servlet> 
>             <servlet-name>HibernateServlet</servlet-name> 
>             <servlet-class> 
>                   net.mycompany.portal.news.HibernateServlet 
>             </servlet-class> 
>       </servlet> 
>       <servlet-mapping> 
>             <servlet-name>HibernateServlet</servlet-name> 
>             <url-pattern>/servlet/HibernateServlet</url-pattern> 
>       </servlet-mapping> 
>       <servlet-mapping> 
>             <servlet-name>ApplicationServlet</servlet-name> 
>             <url-pattern>/app</url-pattern> 
>       </servlet-mapping> 
>       <resource-ref> 
>             <description>DB Connection Pool</description> 
>             <res-ref-name>jdbc/MYCOMPANYOnline</res-ref-name> 
>             <res-type>javax.sql.DataSource</res-type> 
>             <res-auth>Container</res-auth> 
>       </resource-ref> 
> ***** portlet.xml ***** 
> <portlet-app version="1.0" 
>       xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" 
>       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 xml:lang="EN"></description> 
>             <portlet-name>NewsContent</portlet-name> 
>             <display-name xml:lang="EN">NewsContent</display-name> 
>             <portlet-class> 
>                   org.apache.tapestry.portlet.ApplicationPortlet 
>             </portlet-class> 
>             <expiration-cache>0</expiration-cache> 
>             <supports> 
>                   <mime-type>text/html</mime-type> 
>                   <portlet-mode>view</portlet-mode> 
>                   <portlet-mode>help</portlet-mode> 
>             </supports> 
>             <supported-locale>en</supported-locale> 
>             <portlet-info> 
>                   <title>NewsContent</title> 
>                   <short-title>NewsContent</short-title> 
>                   <keywords></keywords> 
>             </portlet-info> 
>       </portlet> 
>       <portlet> 
>             <description xml:lang="EN"></description> 
>             <portlet-name>NewsLine</portlet-name> 
>             <display-name xml:lang="EN">NewsLine</display-name> 
>             <portlet-class> 
>                   org.apache.tapestry.portlet.ApplicationPortlet 
>             </portlet-class> 
>             <expiration-cache>0</expiration-cache> 
>             <supports> 
>                   <mime-type>text/html</mime-type> 
>                   <portlet-mode>view</portlet-mode> 
>                   <portlet-mode>help</portlet-mode> 
>             </supports> 
>             <supported-locale>en</supported-locale> 
>             <portlet-info> 
>                   <title>NewsLine</title> 
>                   <short-title>NewsLine</short-title> 
>                   <keywords></keywords> 
>             </portlet-info> 
>       </portlet> 
> </portlet-app> 
> </web-app> 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org