Payara 5 web.xml 中 PGSimpleDataSource 的自定义属性

Posted

技术标签:

【中文标题】Payara 5 web.xml 中 PGSimpleDataSource 的自定义属性【英文标题】:Custom Property for PGSimpleDataSource in Payara 5 web.xml 【发布时间】:2020-02-05 15:38:00 【问题描述】:

我想使用 PostgresQL 作为数据库在 Payara 5 中配置数据源。这是我来自 web.xml 的代码:

<data-source>
    <name>java:global/my_ds</name>
    <class-name>org.postgresql.ds.PGSimpleDataSource</class-name>
    <server-name>postgres.host.test</server-name>
    <port-number>0</port-number>
    <database-name>mydb</database-name>
    <user>user</user>
    <password>pwd</password>
</data-source>

这很好用。但是我需要在数据源上设置当前模式。 PGSimpleDataSource 上有一个方法可以做到这一点,所以我可以通过编程方式做到这一点。但是,我想配置当前架构以及其他选项。为此,我尝试了:

    将另一个名为&lt;current-schema&gt;my-schema&lt;/current-schema&gt; 的子标记添加到&lt;data-source&gt; 标记。我的 IDE 抱怨这个额外的标签是不允许的。 将名称为current-schemacurrentSchema 的属性添加到&lt;data-source&gt; 标记。这是允许的,但没有效果。

所以,现在我正在寻找实际可行的方法。

【问题讨论】:

抱歉,澄清一下:您是否添加了名称为 &lt;currentSchema&gt;my-schema&lt;/currentSchema&gt;&lt;name&gt;currentSchema&lt;/name&gt;&lt;value&gt;my-schema&lt;/value&gt; 的属性?另外,您是否可以在 URL 中指定架构? ***.com/questions/4168689/… 不用担心,我使用了&lt;name&gt;currentSchema&lt;/name&gt;&lt;value&gt;my-schema&lt;/value&gt;&lt;name&gt;current-schema&lt;/name&gt;&lt;value&gt;my-schema&lt;/value&gt;。由于在这种情况下没有 URL,我无法在其中指定当前架构。尝试在数据库名称中指定它也不起作用。 【参考方案1】:

正如How can I configure JPA for a postgres database schema? 建议的那样,解决方案确实是像这样配置属性:

<data-source>
    <name>java:global/my_ds</name>
    <class-name>org.postgresql.ds.PGSimpleDataSource</class-name>
    <server-name>postgres.host.test</server-name>
    <port-number>0</port-number>
    <database-name>mydb</database-name>
    <user>user</user>
    <password>pwd</password>

    <!-- This is the correct property -->
    <property>
        <name>currentSchema</name>
        <value>my-schema</value>
    </property>

</data-source>

【讨论】:

那么这与您根据上面的 cmets 尝试的有什么不同? ;) 您之前是否忘记指定 &lt;property&gt; 标记或者是什么问题? 老实说,我不知道问题出在哪里。当我第一次尝试它时,它不起作用。当我再次尝试时,它成功了。

以上是关于Payara 5 web.xml 中 PGSimpleDataSource 的自定义属性的主要内容,如果未能解决你的问题,请参考以下文章

在Payara 5中部署包含ejb-module的ear-file时出现问题

升级到 payara 4.1.1.171 后应用程序未加载

使用 Payara 4.1.1 在不同的 JAR 中加载 CDI bean

Tyrus 端点阻止 Glassfish (Payara) 中的线程

Payara中的Apache Camel:'java:/ TransactionManager'查找失败

如何将 Hibernate 配置为 Payara/Glassfish 4.1 的 JPA 提供程序? [关闭]