No idea of the exact cause in your case, but in general, this
exception means that you modified a collection while iterating over it.
In your case, it looks like collection returned by getNewslist() is
somehow getting modified. Try returning this instead:
return Collections.unmodifiableList(newslist);
...and then you'll get an exception at the point when the collection
is modified, which will help you find the source of the problem.
Cheers,
Paul
On Jul 18, 2006, at 6:42 AM, [EMAIL PROTECTED] wrote:
Good day!
I've writed portlet application with tapestry 4.0.2 (using
TapestryApplicationPortlet). I have deployed it to our jetspeed-2
portal
server. Sometimes exception is rised when some users navigates to my
portlet (exception is described bellow).
Any ideas why this would happen? Please, help me!
Thanks!
Sorry for my bad English.
With best regards,
Vitaly Baranovsky
*** EXCEPTION ***
org.apache.hivemind.ApplicationRuntimeException
component [EMAIL PROTECTED]
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.RenderRequestServicerToWebRequestServicerB
ridge.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.renderPo
rtlet(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.aggregateAndRen
der(PageAggregatorImpl.java:199)
org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.aggregateAndRen
der(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>();
long t1 = System.currentTimeMillis();
long t2 = 0, t3 = 0;
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();
}
}
}
t3 = System.currentTimeMillis();
System.out.println("Info:Execution time newslist =" + (t3 -
t1) + "
ms");
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>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
_________________________________________________________________
Piano music podcast: http://inthehands.com
Other interesting stuff: http://innig.net
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]