3

晚上好!

通过 Maven 使用 Cargo,我已将 pom.xml 配置为创建 glassfish 的实例,然后在运行集成测试之前将我的项目部署到它。我大部分时间都在那里,因为我已经部署了我的代码,我已经为它设置了一个数据源和一个 JNDI 资源,但是当我尝试实际使用该资源时,我得到以下异常:

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

在定期安装 glassfish 时,我可以轻松安装连接器,但在这种情况下,glassfish 的安装是自动的,并且每次运行测试时都会创建一个新实例。

有什么方法可以提供 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 回答