晚上好!
通过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的新实例中来提供?
谢谢!
最佳答案
我对文档进行了更多检查,发现可以通过在容器配置中提供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依赖项。它需要引用已经在我的项目中定义的依赖项(对于我的项目,该依赖项的范围为“提供”)。这按预期工作。 :)