3

こんばんは!

統合テストを実行する前に、Maven 経由で Cargo を使用して pom.xml を構成し、glassfish のインスタンスを作成し、そこにプロジェクトをデプロイしました。コードをデプロイし、データソースと JNDI リソースをセットアップしましたが、実際にリソースを使用しようとすると、次の例外が発生します。

Wrong class name or classpath for Datasource Object 
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

グラスフィッシュの通常のインストールでは、コネクターを簡単にインストールできますが、この場合のグラスフィッシュのインストールは自動化されており、テストを実行するたびに新しいインスタンスが作成されます。

mysql コネクタを提供できる方法はありますか (glassfish が読み取ることができるクラスパス上で、またはビルドごとに作成された Glassfish の新しいインスタンスにインストールすることによって)。

ありがとう!

4

1 に答える 1

2

ドキュメントをもう少し精査すると、次のようにコンテナ構成にmaven依存関係を提供することでこれを実行できることがわかりました。

<configuration>
    <container>
        <containerId>glassfish3x</containerId>
        <artifactInstaller>
            <groupId>org.glassfish.main.distributions</groupId>
            <artifactId>glassfish</artifactId>
            <version>${glassfish.version}</version>
        </artifactInstaller>
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
        </dependencies>
    </container>
    <configuration>
        <properties>
            <cargo.datasource.datasource.mysql>
                cargo.datasource.jndi=jdbc/MysqlPool|
                cargo.datasource.driver=com.mysql.jdbc.Driver|
                cargo.datasource.url=jdbc:mysql://localhost/databasename|
                cargo.datasource.transactionsupport=LOCAL_TRANSACTION|
                cargo.datasource.username=username|
                cargo.datasource.password=password
            </cargo.datasource.datasource.mysql>
        </properties>
    </configuration>
</configuration>

mysql の依存関係に注意してください。私のプロジェクトですでに定義されている依存関係を参照する必要があります(私のプロジェクトでは、「提供」の範囲があります)。これは期待どおりに機能します。:)

于 2013-01-14T23:56:29.693 に答える