在本文档:http://download.oracle.com/javase/6/docs/technotes/guides/standards/中,它只描述了一种在Java中覆盖认可标准的非编程方式(例如提供不同的TransformerFactory实现等)。通过在<java-home>\lib\endorsed中放置罐子
有没有办法以编程的方式来规范一个经过认可的jar?(看看Tomcat的背书dir,我想这是可能的,毕竟Tomcat是用Java编写的)
发布于 2011-03-27 08:29:43
Tomcat也只是在启动JVM时设置系统属性,所以使用常规/文档化的方法,正如类加载器“如何-to”中所记录的那样 ("Tomcat通过在启动容器的命令行中包含系统属性设置-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS来利用这种机制“)。
因此,以编程的方式来实现它并不容易。我假设在JVM启动后设置系统属性没有效果(我没有对此进行测试)。
但是,仍然有可能:您只需在应用程序中启动另一个JVM,并在其中设置系统属性即可。您的应用程序必须首先检查是否设置了认可的dir,如果是的话,正常运行,如果不是:使用Runtime.getRuntime().exec(cmdarray)‘重新启动自己’(当然,系统属性设置正确)。这‘开始本身’是有点复杂的正确,但它是可能的。我工作的公司(www.day.com)将其用于所有产品,我们称之为“快速启动”。我相信我们实际上没有设置核可的dir,但是如果当前的设置不够,我们会设置最大内存(-Xmx..)。
https://stackoverflow.com/questions/5447744
复制相似问题