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 上有一个方法可以做到这一点,所以我可以通过编程方式做到这一点。但是,我想配置当前架构以及其他选项。为此,我尝试了:
-
将另一个名为
<current-schema>my-schema</current-schema>
的子标记添加到<data-source>
标记。我的 IDE 抱怨这个额外的标签是不允许的。
将名称为current-schema
和currentSchema
的属性添加到<data-source>
标记。这是允许的,但没有效果。
所以,现在我正在寻找实际可行的方法。
【问题讨论】:
抱歉,澄清一下:您是否添加了名称为<currentSchema>my-schema</currentSchema>
或 <name>currentSchema</name><value>my-schema</value>
的属性?另外,您是否可以在 URL 中指定架构? ***.com/questions/4168689/…
不用担心,我使用了<name>currentSchema</name><value>my-schema</value>
和<name>current-schema</name><value>my-schema</value>
。由于在这种情况下没有 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 尝试的有什么不同? ;) 您之前是否忘记指定<property>
标记或者是什么问题?
老实说,我不知道问题出在哪里。当我第一次尝试它时,它不起作用。当我再次尝试时,它成功了。以上是关于Payara 5 web.xml 中 PGSimpleDataSource 的自定义属性的主要内容,如果未能解决你的问题,请参考以下文章
在Payara 5中部署包含ejb-module的ear-file时出现问题
使用 Payara 4.1.1 在不同的 JAR 中加载 CDI bean
Tyrus 端点阻止 Glassfish (Payara) 中的线程