java.util.ConcurrentModificationException
derkd Apr 17, 2009 2:52 PMHi,
I'm getting an java.util.ConcurrentModificationException when pressing a commandButton which invokes a method on my webservice client with Internet Explorer. I don't get this with firefox.
Can someone helps me with this issue or direct me in the right way?
I use Seam 1.2.1 and richfaces 3.1.6
...
<h:inputText id="zoekBeroep" value="#{zoekBeroepAction.zoekterm}" style="width : 350px;"/>
<h:commandButton value="Zoek" action="#{zoekBeroepAction.findBeroepLetterCombinatie}" eventsQueue="ZoekBeroep" ignoreDupResponses="true"/>
<rich:dataList var="_beroep" value="#{beroepen}">
<h:outputLink id="beroep" onclick="registreer('#{_beroep.cdBeroepsnaam}+#{_beroep.omsBeroepsnaam}')">#{_beroep.omsBeroepsnaam}</h:outputLink>
<h:outputText value=" " />
<h:outputLink value="#" id="link" >
<h:graphicImage id="information" style="border-width:0" value="../images/I.png" />
<rich:componentControl for="informationPanel" attachTo="link" operation="show" event="onclick"/>
</h:outputLink>
</rich:dataList>
...
the method to invoke:
...
public String findBeroepLetterCombinatie(){
beroepen = null;
log.debug("Lettercombinatie: trying to invoke findBeroep on BOCwebservice...");
beroepen = beroepAdapter.findBeroep(zoekterm, 1);
if(beroepen != null){
log.debug("beroepen != null");
}else{
log.debug("beroepen == null");
}
return "retrievedFindBeroepLettercombinatie";
}
...
Web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<!-- Seam -->
<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.seam</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Seam Remoting</servlet-name>
<url-pattern>/seam/remoting/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Seam Resource Servlet</servlet-name>
<servlet-class>org.jboss.seam.servlet.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Seam Resource Servlet</servlet-name>
<url-pattern>/seam/resource/*</url-pattern>
</servlet-mapping>
<!-- Propagate conversations across redirects -->
<!-- <filter>
<filter-name>Seam Redirect Filter</filter-name>
<filter-class>org.jboss.seam.servlet.SeamRedirectFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Seam Redirect Filter</filter-name>
<url-pattern>*.seam</url-pattern>
</filter-mapping>-->
<!-- MyFaces -->
<!-- <listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>-->
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<!-- <context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.jspx</param-value>
</context-param>-->
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<servlet>
<servlet-name>Seam Remoting</servlet-name>
<servlet-class>org.jboss.seam.remoting.SeamRemotingServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- <listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>-->
<!-- Plugging the "Blue Sky" skin into the project -->
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>blueSky</param-value>
</context-param>
<!-- Making the RichFaces skin spread to standard HTML controls -->
<context-param>
<param-name>org.richfaces.CONTROL_SKINNING</param-name>
<param-value>enable</param-value>
</context-param>
<!-- Defining and mapping the RichFaces filter -->
<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<context-param>
<param-name>org.ajax4jsf.SERIALIZE_SERVER_STATE</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.serializeServerState</param-name>
<param-value>true</param-value>
</context-param>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<security-constraint>
<display-name>Restrict raw XHTML Documents</display-name>
<web-resource-collection>
<web-resource-name>XHTML</web-resource-name>
<url-pattern>*.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Error:
SEVERE: Error Rendering View[/beroepen/lettercombinatie.xhtml]
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:841)
at java.util.HashMap$KeyIterator.next(HashMap.java:877)
at java.util.Collections$1.nextElement(Collections.java:3383)
at com.sun.faces.context.RequestMap.entrySet(ExternalContextImpl.java:66
6)
at java.util.AbstractMap.containsKey(AbstractMap.java:136)
at com.sun.facelets.FaceletViewHandler.getResponseContentType(FaceletVie
wHandler.java:461)
at com.sun.facelets.FaceletViewHandler.createResponseWriter(FaceletViewH
andler.java:383)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.jav
a:550)
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWra
pper.java:108)
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.j
ava:216)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePha
se.java:107)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:214)
at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterC
hain.java:64)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletReque
stDispatcher.java:623)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(Ser
vletRequestDispatcher.java:370)
at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequ
estHandler.java:871)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpReques
tHandler.java:453)
at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpReque
stHandler.java:221)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.ja
va:122)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.ja
va:111)
at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSo
cketReadHandler.java:260)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(Relea
sableResourcePooledExecutor.java:303)
at java.lang.Thread.run(Thread.java:595)
I'm getting an java.util.ConcurrentModificationException when pressing a commandButton which invokes a method on my webservice client with Internet Explorer. I don't get this with firefox.
Can someone helps me with this issue or direct me in the right way?
I use Seam 1.2.1 and richfaces 3.1.6
...
<h:inputText id="zoekBeroep" value="#{zoekBeroepAction.zoekterm}" style="width : 350px;"/>
<h:commandButton value="Zoek" action="#{zoekBeroepAction.findBeroepLetterCombinatie}" eventsQueue="ZoekBeroep" ignoreDupResponses="true"/>
<rich:dataList var="_beroep" value="#{beroepen}">
<h:outputLink id="beroep" onclick="registreer('#{_beroep.cdBeroepsnaam}+#{_beroep.omsBeroepsnaam}')">#{_beroep.omsBeroepsnaam}</h:outputLink>
<h:outputText value=" " />
<h:outputLink value="#" id="link" >
<h:graphicImage id="information" style="border-width:0" value="../images/I.png" />
<rich:componentControl for="informationPanel" attachTo="link" operation="show" event="onclick"/>
</h:outputLink>
</rich:dataList>
...
the method to invoke:
...
public String findBeroepLetterCombinatie(){
beroepen = null;
log.debug("Lettercombinatie: trying to invoke findBeroep on BOCwebservice...");
beroepen = beroepAdapter.findBeroep(zoekterm, 1);
if(beroepen != null){
log.debug("beroepen != null");
}else{
log.debug("beroepen == null");
}
return "retrievedFindBeroepLettercombinatie";
}
...
Web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<!-- Seam -->
<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.seam</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Seam Remoting</servlet-name>
<url-pattern>/seam/remoting/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Seam Resource Servlet</servlet-name>
<servlet-class>org.jboss.seam.servlet.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Seam Resource Servlet</servlet-name>
<url-pattern>/seam/resource/*</url-pattern>
</servlet-mapping>
<!-- Propagate conversations across redirects -->
<!-- <filter>
<filter-name>Seam Redirect Filter</filter-name>
<filter-class>org.jboss.seam.servlet.SeamRedirectFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Seam Redirect Filter</filter-name>
<url-pattern>*.seam</url-pattern>
</filter-mapping>-->
<!-- MyFaces -->
<!-- <listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>-->
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<!-- <context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.jspx</param-value>
</context-param>-->
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<servlet>
<servlet-name>Seam Remoting</servlet-name>
<servlet-class>org.jboss.seam.remoting.SeamRemotingServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- <listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>-->
<!-- Plugging the "Blue Sky" skin into the project -->
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>blueSky</param-value>
</context-param>
<!-- Making the RichFaces skin spread to standard HTML controls -->
<context-param>
<param-name>org.richfaces.CONTROL_SKINNING</param-name>
<param-value>enable</param-value>
</context-param>
<!-- Defining and mapping the RichFaces filter -->
<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<context-param>
<param-name>org.ajax4jsf.SERIALIZE_SERVER_STATE</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.serializeServerState</param-name>
<param-value>true</param-value>
</context-param>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<security-constraint>
<display-name>Restrict raw XHTML Documents</display-name>
<web-resource-collection>
<web-resource-name>XHTML</web-resource-name>
<url-pattern>*.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Error:
SEVERE: Error Rendering View[/beroepen/lettercombinatie.xhtml]
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:841)
at java.util.HashMap$KeyIterator.next(HashMap.java:877)
at java.util.Collections$1.nextElement(Collections.java:3383)
at com.sun.faces.context.RequestMap.entrySet(ExternalContextImpl.java:66
6)
at java.util.AbstractMap.containsKey(AbstractMap.java:136)
at com.sun.facelets.FaceletViewHandler.getResponseContentType(FaceletVie
wHandler.java:461)
at com.sun.facelets.FaceletViewHandler.createResponseWriter(FaceletViewH
andler.java:383)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.jav
a:550)
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWra
pper.java:108)
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.j
ava:216)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePha
se.java:107)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:137)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:214)
at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterC
hain.java:64)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletReque
stDispatcher.java:623)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(Ser
vletRequestDispatcher.java:370)
at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequ
estHandler.java:871)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpReques
tHandler.java:453)
at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpReque
stHandler.java:221)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.ja
va:122)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.ja
va:111)
at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSo
cketReadHandler.java:260)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(Relea
sableResourcePooledExecutor.java:303)
at java.lang.Thread.run(Thread.java:595)