我有一个需要调用JAXP的applet,具体为SAXParserFactory。现在,你可以从Javadoc中看到,这在内部使用服务提供商机制记载here:如何愚弄Java服务提供商API(jaxp)
具体来说,如果没有找到任何我的应用程序JAR文件的称为META-INF/services/javax.xml.parsers.SAXParserFactory
一个文件时,它会试图从获取它我应用程序代码库。如果我有我的小应用程序部署如下:
<applet code="com.example.applets.MyApplet"
codebase="http://www.example.com/myapp/" archive="myapp.jar, dom4j.jar">
然后,它会尝试让一个HTTP请求到http://www.example.com/myapp/META-INF/services/javax.xml.parsers.SAXParserFactory
我宁愿它没有这样做,特别是因为我的小程序签署与本附加HTTP通话会触发关于unsigned code的警告。
现在,显而易见的解决方案就是将META-INF/services文件放入我的应用程序JAR中,但是如何执行此操作,但仍然可以使用JAXP的用户JRE默认实现?或者,有没有办法说服小程序运行时只在我的JAR文件中看到,而不是在那个文件的codebase
?
注意:我知道我也可以部署我自己的JAXP-RI副本,但是这对于一个applet来说是相当重的。
看起来很有希望。我会尝试并发布更新! – Dan 2010-11-17 21:11:15
这工作。接受答案。 – Dan 2010-11-18 20:55:02
它也适用于我。谢谢! – 2014-09-08 16:44:57