与What to put into jta-data-source of persistence.xml?和How to map jpa datasources in WildFly?
类似但是,我要求的东西适用于所有供应商或至少WildFly,Glassfish / Payara,WebSphere Application Server经典,WebSphere Application Server Liberty,TomEE。我不是在寻找适用于Java SE Unit测试的东西。
到目前为止,我发现java:comp/env/jdbc/xxx
在WebSphere Application Server和TomEE中有效。有一个映射练习(可以预期)使它工作但我无法在GlassFish / Payara和JBoss / WildFly上工作。
更具体地说,我不希望使用默认数据源,因为对于我的场景,我实际上正在处理两个不同的数据源。例如。用于参考数据,另一个用于交易数据。
答案 0 :(得分:0)
如果您使用的所有应用服务器都符合Java EE 7,则可以使用默认数据源,该数据源是每个EE7规范所必需的:
java:comp/DefaultDataSource
您运行的应用服务器应该允许您自定义DefaultDataSource的配置。
由于我熟悉WebSphere Liberty,因此我可以为您指出Liberty上的默认数据源的文档:
Configuring a default data source
如果您使用的是WebSphere traditional,从v9.0开始它支持Java EE 7,并且具有开箱即用的默认数据源(在规范的JNDI名称下)。
答案 1 :(得分:0)
如果您想使用适用于所有服务器的相同JNDI名称,最好使用资源引用,如What is resource-ref in web.xml used for?
中所述基本上,您可以定义一个任意JNDI名称(理想情况下没有任何java:comp
前缀或类似名称,只需" myDatasource"),然后将其映射到目标提供的具体JNDI名称如果服务器无法直接使用JNDI,则需要为每个服务器定义特定于服务器的描述符(例如,glassfish-web.xml用于GlassFish / Payara,jboss-web.xml用于WildFly,ibm-web WebSphere Classic和Liberty的-bnd.xml。 TomEE似乎支持没有任何前缀的引用,因此如果您选择不带前缀的名称,它应该能够configure a datasource而无需任何其他映射。