Java 在Wildfly Swarm中安装来自私有安全maven repo的JDBC驱动程序

Java 在Wildfly Swarm中安装来自私有安全maven repo的JDBC驱动程序,java,maven,wildfly-swarm,Java,Maven,Wildfly Swarm,我正在尝试使用Java配置API将Oracle JDBC驱动程序安装到Wildfly Swarm(2016.12.0)中。驱动程序jar正确安装在远程、私有、安全的maven存储库中。我基本上是按照下面的例子: 我的项目中有一个src/main/resources/modules/com/oracle/ojdbc/main目录,其中包含以下module.xml文件: <module xmlns="urn:jboss:module:1.3" name="com.oracle.ojdbc"&

我正在尝试使用Java配置API将Oracle JDBC驱动程序安装到Wildfly Swarm(2016.12.0)中。驱动程序jar正确安装在远程、私有、安全的maven存储库中。我基本上是按照下面的例子:

我的项目中有一个src/main/resources/modules/com/oracle/ojdbc/main目录,其中包含以下module.xml文件:

<module xmlns="urn:jboss:module:1.3" name="com.oracle.ojdbc">

    <resources>
        <artifact name="my.repo.group.id:ojdbc6:11.2.0.1.0"/>    
    </resources>

    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>
以下是我得到的一个例外:

2016-12-17 13:25:49,138 ERROR [stderr] (ServerService Thread Pool -- 28) org.jboss.modules.ModuleLoadException: Error loading module from modules/com/oracle/ojdbc/main/module.xml
[0m[31m2016-12-17 13:25:49,139 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.modules.xml.ModuleXmlParser.parseModuleXml(ModuleXmlParser.java:228)
[0m[31m2016-12-17 13:25:49,139 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.wildfly.swarm.bootstrap.modules.BootstrapClasspathModuleFinder.findModule(BootstrapClasspathModuleFinder.java:58)
[0m[31m2016-12-17 13:25:49,139 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.modules.ModuleLoader.findModule(ModuleLoader.java:439)
[0m[31m2016-12-17 13:25:49,139 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.modules.ModuleLoader.loadModuleLocal(ModuleLoader.java:342)
[0m[31m2016-12-17 13:25:49,139 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.modules.ModuleLoader.preloadModule(ModuleLoader.java:289)
[0m[31m2016-12-17 13:25:49,139 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:221)
[0m[31m2016-12-17 13:25:49,139 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.as.connector.subsystems.datasources.JdbcDriverAdd.performRuntime(JdbcDriverAdd.java:98)
[0m[31m2016-12-17 13:25:49,139 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.as.controller.AbstractAddStepHandler.performRuntime(AbstractAddStepHandler.java:337)
[0m[31m2016-12-17 13:25:49,139 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.as.controller.AbstractAddStepHandler$1.execute(AbstractAddStepHandler.java:151)
[0m[31m2016-12-17 13:25:49,140 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:890)
[0m[31m2016-12-17 13:25:49,140 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.as.controller.AbstractOperationContext.processStages(AbstractOperationContext.java:659)
[0m[31m2016-12-17 13:25:49,140 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:370)
[0m[31m2016-12-17 13:25:49,140 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.as.controller.ParallelBootOperationStepHandler$ParallelBootTask.run(ParallelBootOperationStepHandler.java:359)
[0m[31m2016-12-17 13:25:49,140 ERROR [stderr] (ServerService Thread Pool -- 28)     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[0m[31m2016-12-17 13:25:49,140 ERROR [stderr] (ServerService Thread Pool -- 28)     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[0m[31m2016-12-17 13:25:49,140 ERROR [stderr] (ServerService Thread Pool -- 28)     at java.lang.Thread.run(Thread.java:745)
[0m[31m2016-12-17 13:25:49,140 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.threads.JBossThread.run(JBossThread.java:320)
[0m[31m2016-12-17 13:25:49,141 ERROR [stderr] (ServerService Thread Pool -- 28) Caused by: org.jboss.modules.xml.XmlPullParserException: Failed to resolve artifact 'my.repo.group.id:ojdbc6:11.2.0.1.0' (position: END_TAG seen ... name="my.repo.group.id:ojdbc6:11.2.0.1.0"/>... @6:81) 
[0m[31m2016-12-17 13:25:49,141 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.modules.xml.ModuleXmlParser.parseArtifact(ModuleXmlParser.java:838)
[0m[31m2016-12-17 13:25:49,141 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.modules.xml.ModuleXmlParser.parseResources(ModuleXmlParser.java:739)
[0m[31m2016-12-17 13:25:49,141 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.modules.xml.ModuleXmlParser.parseModuleContents(ModuleXmlParser.java:535)
[0m[31m2016-12-17 13:25:49,141 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.modules.xml.ModuleXmlParser.parseDocument(ModuleXmlParser.java:340)
[0m[31m2016-12-17 13:25:49,141 ERROR [stderr] (ServerService Thread Pool -- 28)     at org.jboss.modules.xml.ModuleXmlParser.parseModuleXml(ModuleXmlParser.java:226)
[0m[31m2016-12-17 13:25:49,141 ERROR [stderr] (ServerService Thread Pool -- 28)     ... 16 more
我已经能够确认示例代码在wildfly swarm项目中有效,因此我确信我的项目中没有网络、配置或明显的maven依赖性问题;我可以让它与mysql驱动程序配合使用,例如,它的安装没有明显的问题。我还相信,访问我的私有maven repo不会有任何问题—settings.xml和security-settings.xml已为此项目和其他项目正确配置,并且此驱动程序工件已正确安装在本地存储库中


任何洞察都将被感激——我想我要么错过了一些真正愚蠢的东西,要么我试图做一些不受支持的事情。有趣的是,如果我手动将资源节点从本地maven repo复制到一个临时项目构建repo中(路径是奇数,它是
/?~/repository?/.m2
,是的,路径包括问号、空格和波浪号)部署工作正常。

我认为这是一个问题,因为Maven的安全设置没有用于检索工件,这就是找不到工件的原因


话虽如此,自2016.12.0以来,无需编写module.xml,就可以更轻松地配置JDBC驱动程序。看一看,它解释了如何只添加JDBC驱动程序的Maven依赖项,然后用yml对其进行配置,因此我试图做一些愚蠢的、不受支持的事情

我的settings.xml本地存储库配置如下所示(我在OSX 10.12上):


/Users/rekgm/.m2/存储库
没有去掉空白,因此WF Swarm引导模块使用的MavenResolver无法正确地找出本地maven repo的位置,因此它将尝试从远程maven repo重新下载工件。这对于存在于不安全的远程回购中的工件非常有效,但不理解远程回购可以安全。因此我犯了一个错误

我将settings.xml文件更改为:

<localRepository>/Users/rekgm/.m2/repository</localRepository>
/Users/rekgm/.m2/存储库
并将Oracle依赖项添加到主项目pom.xml中:

<dependencies>
    ...
    <dependency>
        <groupId>my.repo.group.id</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.1.0</version>
    </dependency>
    ...
</dependencies>

...
my.repo.group.id
ojdbc6
11.2.0.1.0
...

这将清除错误。我可能会在某个时候提交一个bug和一个功能请求。

谢谢,这是一个很好的提示!
<localRepository>/Users/rekgm/.m2/repository</localRepository>
<dependencies>
    ...
    <dependency>
        <groupId>my.repo.group.id</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.1.0</version>
    </dependency>
    ...
</dependencies>