문제

I have a servlet which uses a service to parse a YAML file. but when I put some user traffic on my servlet I get:

SEVERE: Servlet.service() for servlet [SitesController] in context with path [] threw exception [java.util.ConcurrentModificationException] with root cause
java.util.ConcurrentModificationException
    at java.util.ArrayList$SubList.checkForComodification(ArrayList.java:1129)
    at java.util.ArrayList$SubList.listIterator(ArrayList.java:1009)
    ...
    at com.example.UrlRedirectEngin.redirectoToRespectiveSubDomain(UrlRedirectEngin.java:250)

I am not sure if the exception is from parsing the YAML file or not. However the exception is pointing to the line below which I render the page line 250:

request.getRequestDispatcher(JSP_PAGE).forward(request, response);

I just want to know if ConcurrentModificationException can also happens while adding elements to a Map? If yes how can I handle this issue. Thanks.

도움이 되었습니까?

해결책

The line

request.getRequestDispatcher(JSP_PAGE).forward(request, response);

forwards to an JSP page. The error may be inside of that JSP as well (the part of the stacktrace may hide the original error)

다른 팁

ConcurrentModificationException means that you are editing your map/collection when you try to read it. Simple example :

final List<String> list = new ArrayList<String>()
    private static final long serialVersionUID = 1L; {
        {
            add("Hi");
            add("This is a test");
        }
    };
for(final String string : list) {
    if(string.equals("Hi")) {
        list.remove("Hi");
    }
}

I think getRequestDispatcher is modifying your map while your using it.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top