我刚刚在Mac 10.9.5上使用Java 7下载了Wildfly 9.0.0.CR2。我注意到默认情况下,Wildfly 9包含一个bouncycastle模块(modules / system / layers / base / org / bouncycastle / main / bcprov-jdk15on-1.52.jar)。我想在Wildfly中安装另一个bouncycastle模块(bcprov-jdk16-1.46.jar)。有没有办法可以禁用JBoss包含的那个?当我试图删除包含的Jboss模块(modules / system / layers / base / org / bouncycastle /文件夹)时,我在JBoss启动时收到错误
08:36:19,086 ERROR [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0055: Caught exception during boot: org.jboss.as.controller.persistence.ConfigurationPersistenceException: WFLYCTL0085: Failed to parse configuration
at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:131)
at org.jboss.as.server.ServerService.boot(ServerService.java:350)
at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:271)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.xml.stream.XMLStreamException: WFLYCTL0083: Failed to load module org.jboss.as.weld
at org.jboss.as.controller.parsing.ExtensionXml.parseExtensions(ExtensionXml.java:155)
at org.jboss.as.server.parsing.StandaloneXml.readServerElement_1_4(StandaloneXml.java:433)
at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:144)
at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:106)
at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:110)
at org.jboss.staxmapper.XMLMapperImpl.parseDocument(XMLMapperImpl.java:69)
at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:123)
... 3 more
答案 0 :(得分:0)
您可能会看一下这个讨论,它几乎与您想做的事情相同(w.r.t.版本的方向相反): BouncyCastle 1.51 loading in war on Wildfly 8.0
它的长短是,您可以创建一个自定义模块(或者,我认为,现有模块的另一个插槽?)并在jboss-deployment-structure.xml中引用一个而不是默认模块野生蝇带来它。
如果您不希望/需要BC作为模块,您也可以将它包含在EAR / WAR的lib文件夹中,并且可以从那里加载。
我们的部署结构看起来基本上是这样的:
my.ear
+ lib/ <-- dependencies for multi-submodule deployment
+ META-INF/ <-- application.xml defines submodule(s) e.g. web.war,
<-- also jboss-deployment-structure.xml to include/export wildfly core modules for your EAR
+ web.war <-- our core deployment
我们包括例如不同版本的hibernate比wildfly。我希望你的耳朵里还可以包含不同的BC版本。
另见: https://docs.jboss.org/author/display/WFLY8/Class+Loading+in+WildFly
答案 1 :(得分:0)
WildFly使用模块化类加载,因此并非所有模块都在类路径上。 部署本身只是另一个模块,它根据应该添加的服务器部署描述符获得额外的依赖关系。
说到bouncycastle,有些模块本身需要它,但这并不意味着它们会将这种依赖性暴露给你的部署。
8.0中存在一个错误,导致BC在用户部署使用Web服务时暴露给用户部署。这是固定的。 鉴于您使用的WildFly 9不再是问题。
正如其他人建议的那样,您可以使用不同的名称或至少不同的插槽名称创建新模块,您可以通过jboss-deployment-structure.xml
包含这些模块。顺便说一句,bcprov-jdk16-1.46比WildFly提供的要老得多。