2010-06-16 3 views
2

저는 현재 xsl 변환을 많이 사용하는 Java 웹 프로젝트 (Spring)에서 작업하고 있습니다. 스타일 시트는 거의 변경되지 않으므로 현재 캐싱됩니다. 나는 각 요청마다 해석 될 필요가 없도록 xsl-s를 클래스 파일로 컴파일하여 성능을 향상시킬 것을 고려하고 있었다..xsl 파일을 .class 파일로 컴파일

저는 Java에 익숙하지 않아 잘 생태계를 알지 못합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까 (라이브러리, 메서드 등)? 변압기는 스레드로부터 안전하지 않기 때문에,

http://onjava.com/pub/a/onjava/excerpt/java_xslt_ch5/index.html?page=9

스레드 안전에주의 마십시오

감사합니다,
알렉스

답변

2

당신은 템플릿과 스타일 시트 캐시를해야합니다. 격리를 위해 ThreadLocal에서 변형 작업을 수행하는 것이 가장 좋습니다.

3

목표를 달성하기 위해 .class으로 컴파일 할 필요가 없을 수도 있습니다. 실행 당 한 번씩 xsl을 컴파일하고 모든 변환에 대해 컴파일 된 인스턴스를 다시 사용할 수 있습니다.

처럼, 그래서 당신이 Templates 객체를 생성하려면 다음을 수행

TransformerFactory factory = TransformerFactory.newInstance(); 
factory.setErrorListener(new ErrorListener(...)); 
xslTemplate = factory.newTemplates(new StreamSource(...)); 

와 작업 할 수있는 변압기를 얻을 수있는 템플릿을 사용

Transformer transformer = xslTemplate.newTransformer(); 

사용하는 XSL 라이브러리에 따라 당신의 마일리지는 다를 수 있습니다.

1

Gregor/XSLT 컴파일러 사용을 고려하십시오.

관련 문제