JRockit 与 HotSpot 类加载问题 - META-INF/服务
根据 javax.xml.validation.SchemaFactory#newInstance 的 javadoc,我可以通过在 META-INF/services 中放置一个名为 javax.xml.validation.SchemaFactory 的文件来指定我想要的 SchemaFactory 的实现,其中包含所需的类(在我的案例 org.apache.xerces.jaxp.validation.XMLSchemaFactory)。
当我使用 HotSpot JVM 运行 Weblogic 时,效果很好,但是当使用 JRockit JVM 时,它在 META-INF/services 目录中找不到任何内容(我已经单步执行了服务器上和 javax.xml 中的代码)。 validation.SchemaFactoryFinder#createServiceFileIterator,对于 JRockit,枚举返回空,但对于 HotSpot,返回正确的资源)。我认为这可能是因为它使用了不同的类加载器。
有什么建议吗?
According to the javadoc of javax.xml.validation.SchemaFactory#newInstance, I can specify which implementation of SchemaFactory I want, by placing a file in META-INF/services called javax.xml.validation.SchemaFactory with the required class (in my case org.apache.xerces.jaxp.validation.XMLSchemaFactory).
This works fine when I run Weblogic using the HotSpot JVM, but when using the JRockit JVM, it doesn't find anything in the META-INF/services directory (I've stepped through the code on the server and in javax.xml.validation.SchemaFactoryFinder#createServiceFileIterator, the Enumeration returns empty for JRockit but the correct resouce for HotSpot). I think it might be because it is using a different classloader.
Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最后我通过在weblogic启动脚本中设置 -Djavax.xml.validation.SchemaFactory=org.apache.xerces.jaxp.validation.XMLSchemaFactory 解决了这个问题
In the end I worked around this problem by setting -Djavax.xml.validation.SchemaFactory=org.apache.xerces.jaxp.validation.XMLSchemaFactory in the weblogic startup script