我尝试将 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>
),而不是配置应用程序定义的数据源。在服务器配置中(示例中的 dataSource
和 library
元素)。
例如,您可以在 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/