我正在使用JPA(Eclipselink)和远程mysql数据库的桌面应用程序。
我的persistence.xml我有两个PersistenceUnit,一个使用localhost,另一个使用我的远程数据库。当我尝试加载EntityManagerFactory时,它在localhost上工作正常,但从未连接到远程,并且只是等待很长时间才提供错误。这是我的persistence.xml的一部分
Windows Server 2003上的远程MYSQL。
<persistence-unit name="SOFALEnterprisePU3" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://192.168.10.138:3306/sofaldb"/>
<property name="javax.persistence.jdbc.password" value="password"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
</properties>
LOCAL MYSQL
<persistence-unit name="SOFALEnterprisePU2" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/sofaldb"/>
<property name="javax.persistence.jdbc.password" value="password"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
</properties>
答案 0 :(得分:2)
当你说遥控器时,你的意思是相同的局域网还是互联网?因为IP 192.168.10.138指定一个专用LAN,所以你的远程机器必须在同一网络上有一个地址,如192.168.10。*
首先确保在Windows防火墙中打开端口3306。
如果是不同的网络,则需要将路由器配置为转发端口,并且必须连接到路由器的公共IP。
如果它是同一个局域网,则可能没有设置mysql接受该用户名密码组合的远程连接。
答案 1 :(得分:0)
在普通的JPA中,每个项目只使用一个persistence.xml。但是你可以尝试在一个项目中使用多个persistence.xml的Spring's JPA。参见这个link来处理多个持久性单元。