我目前正在研究一個涉及大量使用xsl轉換的Java web項目(Spring)。樣式表很少改變,所以它們當前被緩存。我正在考慮通過將xsl-s編譯到類文件中來提高性能,以便不必在每個請求上解釋它們。將.xsl文件編譯爲.class文件
我是Java新手,所以我不太瞭解這個生態系統。這樣做的最好方法是什麼(庫,方法等)?
謝謝,
亞歷
我目前正在研究一個涉及大量使用xsl轉換的Java web項目(Spring)。樣式表很少改變,所以它們當前被緩存。我正在考慮通過將xsl-s編譯到類文件中來提高性能,以便不必在每個請求上解釋它們。將.xsl文件編譯爲.class文件
我是Java新手,所以我不太瞭解這個生態系統。這樣做的最好方法是什麼(庫,方法等)?
謝謝,
亞歷
你需要一個模板和樣式表緩存:
http://onjava.com/pub/a/onjava/excerpt/java_xslt_ch5/index.html?page=9
千萬要小心線程安全的,因爲變壓器是不是線程安全的。最好在ThreadLocal中進行隔離轉換。
您可能不需要編譯爲.class
來實現您的目標,您可以在每次運行時編譯一次xsl,併爲所有轉換重新使用編譯後的實例。
要做到這一點,你創建一個Templates
對象,如:
TransformerFactory factory = TransformerFactory.newInstance();
factory.setErrorListener(new ErrorListener(...));
xslTemplate = factory.newTemplates(new StreamSource(...));
,並使用模板來獲得一個變壓器做的工作:
Transformer transformer = xslTemplate.newTransformer();
根據您使用XSL庫中的里程可能不同。
考慮使用Gregor/XSLT編譯器