gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:11:12 24 4
gpt4 key购买 nike

我尝试将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com