Java 为什么我们必须在persistence.xml中提供数据库凭据
我们正在使用JPA2.0,我们在websphere中创建了数据源,并试图通过J2SE应用程序访问数据库。我们收到无效的用户名和密码错误。如果我们在Java 为什么我们必须在persistence.xml中提供数据库凭据,java,jakarta-ee,jpa,jpa-2.0,Java,Jakarta Ee,Jpa,Jpa 2.0,我们正在使用JPA2.0,我们在websphere中创建了数据源,并试图通过J2SE应用程序访问数据库。我们收到无效的用户名和密码错误。如果我们在persistence.xml中提供用户名和密码,它就可以正常工作 请任何人解释一下,既然我们有数据源,为什么我们必须在persistence.xml中提供DB凭据 注意:数据源已成功创建,测试成功 persistence.xml <?xml version="1.0" encoding="UTF-8"?> <persistence
persistence.xml
中提供用户名和密码,它就可以正常工作
请任何人解释一下,既然我们有数据源,为什么我们必须在persistence.xml中提供DB凭据
注意:数据源已成功创建,测试成功
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="Printer">
<jta-data-source>jdbc/TestDataSource</jta-data-source>
<properties>
<property name="openjpa.Optimistic" value="false" />
<property name="openjpa.LockManager" value="pessimistic" />
<property name="javax.persistence.jdbc.user" value="admin" />
<property name="javax.persistence.jdbc.password" value="admin#2" />
</properties>
</persistence-unit>
</persistence>
jdbc/TestDataSource
您不需要在应用程序中指定凭据。只需通过JNDI访问您的数据库,指定您在WS中创建的数据源的名称
一种方法是使用预配置的数据源配置持久化单元(请仔细检查它是否配置正确-测试功能在WS中可用)
oracle.toplink.essentials.PersistenceProvider
jdbc/MyDataSource
如果未在应用程序容器端配置数据源,则可以在应用程序端自行设置。例如,您需要许多应用程序,每个应用程序都有自己的数据库连接配置
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
<provider>
oracle.toplink.essentials.PersistenceProvider
</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="toplink.logging.level" value="INFO"/>
<property name="toplink.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
<property name="toplink.jdbc.url" value="jdbc:oracle:thin:@myhost:l521:MYSID"/>
<property name="toplink.jdbc.password" value="tiger"/>
<property name="toplink.jdbc.user" value="scott"/>
</properties>
</persistence-unit>
oracle.toplink.essentials.PersistenceProvider
假的
persistence.xml具有两种方式的配置。请删除不必要的代码,然后重试。在websphere中,数据源的配置似乎不正确。通过websphere控制台验证配置 有两种方法可以获得
连接
。如果您通过属性提供凭据,那么您的jpa实现似乎使用了DataSource.getConnection(字符串用户名、字符串密码)
连接属性打算在JavaSE环境中使用。在JEE中,您应该更喜欢JNDI查找。请参阅JPA2.0规范的一节。显然,如果我不得不相信发布的persistence.xml文件,OP就是这么做的。注意这里的jta数据源行。你能再解释一下吗?我不明白你的意思。请放心,如果一切都设置正确,这只是工作。数据源连接在被JPA引用时不会表现出神奇的不同,这一切都是一样的。所以,在你的期望中,有些地方出了问题;错误的数据库、错误的数据源、类路径上错误的persistence.xml等。
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
<provider>
oracle.toplink.essentials.PersistenceProvider
</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="toplink.logging.level" value="INFO"/>
<property name="toplink.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
<property name="toplink.jdbc.url" value="jdbc:oracle:thin:@myhost:l521:MYSID"/>
<property name="toplink.jdbc.password" value="tiger"/>
<property name="toplink.jdbc.user" value="scott"/>
</properties>
</persistence-unit>