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.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>();
     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]

Reply via email to