1

Java 構成 API を使用して、Oracle JDBC ドライバーを Wildfly Swarm (2016.12.0) にインストールしようとしています。ドライバー jar は、リモートのプライベートで安全な Maven リポジトリーに正しくインストールされます。私は基本的にここの例に従っています:

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

私のプロジェクトには、次の module.xml ファイルを含む src/main/resources/modules/com/oracle/ojdbc/main ディレクトリがあります。

<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ドライバーで正常に動作させることができます。明らかな問題なくインストールされます。また、プライベート Maven リポジトリへのアクセスに問題がないことも確信しています。settings.xml と security-settings.xml は、このプロジェクトおよび他のプロジェクトに対して正しく構成されており、このドライバー アーティファクトはローカル リポジトリに正しくインストールされています。

洞察をいただければ幸いです-本当にばかげたものを見逃しているか、サポートされていないことをしようとしていると思います。興味深いことに、リソース ノードをローカルの Maven リポジトリから一時プロジェクト ビルド リポジトリのように見えるものに手動でコピーすると (パスが奇妙で<project root>/? ~/repository?/.m2、パスに疑問符、空白、およびチルダが含まれています)、展開が機能します。

4

2 に答える 2

1

つまり、私は愚かサポートされていないことをしようとしていたことがわかりました。

私のsettings.xmlローカルリポジトリ構成は次のようになりました(私はOSX 10.12を使用しています):

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

MavenSettings.javaは空白を取り除かないため、WF Swarm ブートストラップ モジュールが使用する MavenResolver は、ローカルの Maven リポジトリが存在する場所を正しく把握できなかったため、リモートの Maven リポジトリからアーティファクトを再ダウンロードしようとしました。これは、セキュリティで保護されていないリモート リポジトリに存在するアーティファクトには最適ですが、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>

これでエラーが解消されます。いつかバグと機能リクエストを提出する予定です。

于 2016-12-20T15:36:47.303 に答える
0

Maven のセキュリティ設定がアーティファクトの取得に使用されていないため、アーティファクトが見つからないという問題があると思います。

そうは言っても、2016.12.0 以降、module.xml を記述せずに JDBC ドライバーを構成するさらに簡単な方法があります。https://howto.wildfly-swarm.io/create-a-datasource/を見てください。JDBC ドライバーの Maven 依存関係を追加してから、yml で構成する方法が説明されています。

于 2016-12-19T02:38:34.750 に答える