2016-09-05 2 views
1

EPUB 파일을 업로드로 허용 한 다음 JAR 파일을 사용하여 EPUB에서 확인/유효성 검사를 수행하는 JSP가 있습니다.JSP는 JAR 인스턴스 하나만 실행합니다.

나는 그것이 잘 작동있어하지만 난이 다른 탭, TAB1TAB2 및 각 탭에 대해 다른 파일을 업로드, 결과에서 JSP 페이지를 사용하여 테스트 할 때 두 페이지 만 1위한 것입니다 위해 tab1 또는 tab2 탭과 나중에 Tomcat 서버가 종료됩니다.

나는 콘솔을 확인하고 그것은

java.util.ConcurrentModificationException 내가 정적 변수를 가지고 내 JAR 파일에 의해 발생합니다 생각

있습니다.

제 질문은 JSP가 JAR의 인스턴스를 2 개만 실행한다고해도됩니까?

그렇다면 고정 변수를 내 유일한 옵션으로 수정합니까 아니면 내가 할 수있는 다른 방법이 있습니까?

+1

아마도 라이브러리의 클래스를 잘못된 방식으로 사용합니까? 또는 이미 병렬 액세스를 허용하지 않는 방식으로 라이브러리가 작성되었다고 생각되면 ... 코드를 공유해야합니다. 당신이 사용하는 외부 라이브러리입니까? – home

+0

@home 응답에 감사하지만 생각했습니다. 결과를 보유하는 것은 정적 변수 였기 때문에 왜 하나의 결과 만 얻었습니다. 어쨌든 고마워 :) 아직 JSP에서 – Marc

+0

"그냥 JAR의 단일 인스턴스"에 새벽은 정말 말이되지 않습니다. JAR에는 인스턴스가 없습니다. 클래스 바이트 코드 및 기타 리소스를 담는 컨테이너 일뿐입니다. – Henry

답변

2

각 웹 응용 프로그램에는 하나의 클래스 로더 만 있습니다. 웹 애플리케이션의 일부인 JSP는 한 번만로드되는 JAR을 사용합니다. 따라서 정적 변수는 모든 요청간에 공유되며 내용은 덮어 쓰기됩니다. 변수를 비 정적으로 만들고 각 JSP에서 새 인스턴스를 만들어 처리해야합니다.

+0

다소 늦었지만 이것이 실제로 내가 한 일입니다. JAR의 모든 정적 변수를 제거하고 각 JSP에서 새 인스턴스를 만들었고 페이지가 훌륭하게 작동했습니다. 건배 @peterkofler – Marc

관련 문제