gpt4 book ai didi

java - 将 JDBC 驱动程序从私有(private)安全 Maven 存储库安装到 Wildfly Swarm 中

转载 作者:行者123 更新时间:2023-11-30 06:59:22 25 4
gpt4 key购买 nike

我正在尝试使用 Java 配置 API 将 Oracle JDBC 驱动程序安装到 Wildfly Swarm (2016.12.0) 中。驱动程序 jar 已正确安装在远程、私有(private)、安全的 Maven 存储库中。我基本上遵循这里的示例:

https://github.com/wildfly-swarm/wildfly-swarm-examples/tree/master/datasource/datasource-subsystem

我的项目中有一个 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>

这是我正在使用的配置代码片段:

Swarm swarm = new Swarm();

DatasourcesFraction datasources = new DatasourcesFraction().jdbcDriver("oracle-ojdbc-xa", (d) -> {
d.xaDatasourceClass("oracle.jdbc.xa.client.OracleXADataSource");
d.driverModuleName("com.oracle.ojdbc");
});

swarm.fraction(datasources);
swarm.start();
swarm.deploy();

这是我遇到的异常:

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 驱动程序一起正常工作,它安装时没有明显的问题。我也确信访问我的私有(private) Maven 存储库没有问题 - settings.xml 和 security-settings.xml 已为此项目和其他项目正确配置,并且此驱动程序 Artifact 已正确安装在我的本地存储库中。

任何见解都会受到赞赏 - 我认为我要么错过了一些非常愚蠢的东西,要么我正在尝试做一些不受支持的事情。有趣的是,如果我手动将资源节点从本地 Maven 存储库复制到在我看来是临时项目构建存储库(路径很奇怪,它是 <project root>/? ~/repository?/.m2,是的,该路径包括问号、空格和波形符)部署工作正常。

最佳答案

事实证明我正在尝试做一些愚蠢的事情并且不受支持。

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

<localRepository>
/Users/rekgm/.m2/repository
</localRepository>

MavenSettings.java不会删除空格,因此 WF Swarm 引导模块使用的 MavenResolver 无法正确确定本地 Maven 存储库所在的位置,因此它会尝试从远程 Maven 存储库重新下载 Artifact 。这对于存在于不安全的远程存储库中的 Artifact 非常有用,但是 MavenArtifactUtil.downloadFile()不明白可以保护远程存储库。因此我收到了错误。

我将 settings.xml 文件更改为:

<localRepository>/Users/rekgm/.m2/repository</localRepository>

并将Oracle依赖添加到主项目pom.xml中:

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

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

关于java - 将 JDBC 驱动程序从私有(private)安全 Maven 存储库安装到 Wildfly Swarm 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41202141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com