|
在JAXP中透明的缓存XSL转换器(6) { while (activeWriters > 0) try { wait(); } catch (InterruptedException iex) { } ++activeReaders; }
protected synchronized void afterRead() { --activeReaders; notifyAll(); }
protected synchronized void beforeWrite() { while (activeReaders > 0 activeWriters > 0) try { wait(); } catch (InterruptedException iex) { } ++activeWriters; }
protected synchronized void afterWrite() { --activeWriters; notifyAll(); } 了解了以上的代码后,我们最终获得了一个可以透明的实现对基于文件的样式表的缓存功能的transformer factory(你可以在资源处下载全部源代码)。这里只展示了使factory完全适用于标准JAXP程序的部分。 有一些方法可以使TransformerFactory.newInstance()方法返回一个定制的transformer factory实现的实例。其中最简单易懂的方法就是在system property中的Javax.XML.transform.TransformerFactory中指定factory的类名。 这个办法的优点就是具有最高的优先级,缺点就是必须手工操作。 另一个方法是是使用一个JRE(Java Runtime Environment)级的配置文件${JRE_HOME}/lib/jaXP.properties来指定你自己的类名 ...
|