如何忽略/升级JBoss Wildfly 9中的模块?

时间:2015-07-16 13:46:02

标签: jboss module wildfly bouncycastle

我刚刚在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

2 个答案:

答案 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

自定义模块教程: http://middlewaremagic.com/jboss/?p=1933

解决方案的类似问题:https://developer.jboss.org/thread/175395

答案 1 :(得分:0)

WildFly使用模块化类加载,因此并非所有模块都在类路径上。 部署本身只是另一个模块,它根据应该添加的服务器部署描述符获得额外的依赖关系。

说到bouncycastle,有些模块本身需要它,但这并不意味着它们会将这种依赖性暴露给你的部署。

8.0中存在一个错误,导致BC在用户部署使用Web服务时暴露给用户部署。这是固定的。 鉴于您使用的WildFly 9不再是问题。

正如其他人建议的那样,您可以使用不同的名称或至少不同的插槽名称创建新模块,您可以通过jboss-deployment-structure.xml

包含这些模块。

顺便说一句,bcprov-jdk16-1.46比WildFly提供的要老得多。