使用JPA EclipseLink进行无连接远程MySQL连接

时间:2012-08-18 22:23:07

标签: java mysql jpa

我正在使用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>

2 个答案:

答案 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来处理多个持久性单元。