2012-02-13 2 views
0

내 프로젝트에서 EL의 독립 실행 형 재스퍼 구현을 사용하고 있습니다. 내 받는다는 치어 파일을 libs와 추가 : ValueExpression은 스레드 안전합니까?

<dependency> 
     <groupId>org.apache.tomcat</groupId> 
     <artifactId>el-api</artifactId> 
     <version>6.0.32</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.tomcat</groupId> 
     <artifactId>jasper-el</artifactId> 
     <version>6.0.32</version> 
    </dependency> 

가 현재 내 응용 프로그램 때문에 엘 표현의 사용량이의 매우 느립니다 - 그것은 호출해야 적절한 시간에 컴파일합니다. 이제 초기화 시간에 표현식 컴파일을 옮기고 싶습니다.하지만 동일한 ValueExpression을 여러 스레드에서 사용하는 데 threadsafe가 필요한지 궁금합니다. 이견있는 사람?

답변

1

값 expresion은 스레드로부터 안전하지 않습니다. 그러나 EL 구현은 구문 분석 된 표현식을 내부적으로 캐시해야하고 ExpressionFactory.createExpression(...)을 호출하면 처음에만 표현식 문자열을 구문 분석해야합니다.

환경에 따라 Tomcat의 성능보다 우수한 EL 구현을 시도 할 수 있습니다 (예 : JUEL은 성능을 크게 향상시킬 수 있습니다.

+0

또한 [JUEL 사이트] (http://juel.sourceforge.net/guide/util/index.html)에서 유용한 정보를 찾았습니다 : 생성시 컨텍스트의 함수 매퍼와 변수 매퍼가 바인딩에 사용됩니다 정적 메소드에 대한 함수 호출 및 값 표현식에 대한 식별자 (변수). 문맥의 해석자는 작성시에 사용되지 않습니다. 평가할 때 컨텍스트의 분석자는 속성 확인 및 언 바운드 식별자 (최상위 속성)를 확인하는 데 사용됩니다. 컨텍스트의 함수 매퍼 및 변수 매퍼는 평가시 사용되지 않습니다. –

0

Don은 일반적인 초기화 코드에서 스레드 안전 문제를 해결하지 않는 한 그렇게 생각하지 않습니다.

관련 문제