java - 如何将 PostgreSQL 驱动程序 (jar) 添加到使用 liberty-maven-plugin 创建的 open-liberty microprofile fat jar?

标签 java postgresql maven jpa open-liberty

我尝试将 PostgreSQL 与我的 MicroProfile 应用程序一起使用,但无法加载驱动程序。我的 server.xml 包含以下内容:

<dataSource jndiName="jdbc/reports">
    <jdbcDriver libraryRef="PostgresLib" />
    <properties.postgresql serverName="localhost"
                           portNumber="5432"
                           databaseName="reports"
                           user="reports"
                           password="reports"/>
</dataSource>

<library id="PostgresLib">
    <fileset dir="${server.config.dir}/lib"
             includes="postgresql-42.2.9.jar"/>
</library>

我尝试通过 maven-dependency-plugin 复制 jar 文件,但 target/liberty 文件夹中没有 jar 文件。我猜 liberty-maven-plugin 之前已经清除了文件夹。我还在 pom.xml 中添加了以下依赖项:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.9</version>
</dependency>

我错过了什么?

最佳答案

如果 PostgreSQL jar 位于 ${server.config.dir}/lib/postgresql-42.2.9.jar

但是,听起来您是在说 PostgreSQL jar 实际上打包在您的应用程序中。目前,为应用程序中打包的 JDBC 驱动程序定义数据源的唯一方法是配置应用程序定义的数据源(Web 或 ejb 组件上的 @DataSourceDefinition 或部署描述符中的 <data-source>),而不是配置应用程序定义的数据源。在服务器配置中(示例中的 dataSourcelibrary 元素)。

例如,您可以在 Servlet 上配置如下内容,

@DataSourceDefinition(name = "java:app/env/jdbc/reports",
                      className = "org.postgresql.xa.PGXADataSource",
                      databaseName = "reports",
                      serverName="localhost",
                      portNumber=5432,
                      user = "reports",
                      password = "reports")
public class MyServlet extends HttpServlet {
    @Resource(lookup = "java:app/env/jdbc/reports")
    DataSource reportsDataSource;
    ...

关于java - 如何将 PostgreSQL 驱动程序 (jar) 添加到使用 liberty-maven-plugin 创建的 open-liberty microprofile fat jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59368683/

相关文章:

java - 处理异常而不导致套接字服务器崩溃?

java - Spark 1.4.0 org.apache.spark.sql.AnalysisException : cannot resolve 'probability' given input columns

Postgresql 用户定义函数创建日期或修改日期

postgresql - 递归 PostgreSQL 动态平均

postgresql - 加密postgresql中的数据

Maven:@ParameterizedTest 上没有可运行的方法

java - 在 Spark 中过滤自定义数据结构

java - 在 POI 中合并后为单元格设置值

eclipse - 如何仅编译 gwt 模块的更改部分?

java - 无法更新 Maven 配置无法计算构建计划 : Plugin org. apache.maven.plugins :maven-resources-plugin:2. 5