如果 sjsxp 和 wstx 都在类路径中,如何选择它们的实现
Axis2 依赖 woodstox 的 wstx,而我项目的其他部分已经使用 sjsxp 进行了大量测试,我们无法重新运行相同的测试。现在,使用 axis2 解析 SOAP 消息存在问题,如果我去掉 sjsxp,问题就消失了。有没有办法告诉 axis2 使用 wstx 实现,而让项目的其余部分单独使用 sjsxp 实现?
Axis2 relies on woodstox's wstx while other part of my project has tested heavily with sjsxp and we can't afford to rerun the same test. Now, there is a problem with parsing SOAP message with axis2 that if I take away sjsxp, the problem is gone. Is there a way to tell axis2 to use the wstx implementation and leave the rest of the project alone to use sjsxp implementation?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最简单的方法是永远不要使用 XMLInputFactory.createInstance() (对于 XMLOutputFactory 也是如此)。
而是使用显式构造函数——这些发现方法背后的意图是好的,但不幸的是,在我看来,它们往往更麻烦而不值得。
为了减少直接使用构造函数的显式依赖,最好使用像 Guice 这样的依赖注入库(Spring 和其他库也可以这样做),以便实例化只发生在一个地方。
这适用于您的项目部分,但无法解决 Axis2 问题。我怀疑 Axis2 有一个设置,但我不知道它是什么。
Simplest way is to never use XMLInputFactory.createInstance() (and same for XMLOutputFactory).
Rather use explicit constructors -- the intent behind these discovery methods is nice, but unfortunately they tend to be more hassle than worth in my opinion.
To reduce explicit dependencies from using constructors directly it's probably best to use a dependency injection library like Guice (Spring and others will do too) so that instantiation occurs in just one place.
This would work for your part of project but would not solve Axis2 issue. I suspect there is a setting for Axis2 but I don't know what it would be off-hand.