2

私は、JPA(Eclipselink) とリモート mysql データベースを使用してデスクトップ アプリに直接取り組んでいます。

私のpersistence.xmlには2つのPersistenceUnitがあり、1つはローカルホストを使用し、もう1つはリモートデータベースを使用します。EntityManagerFactory を読み込もうとすると、ローカルホストでは正常に動作しますが、リモートに接続されることはなく、非常に長い間待機するだけでエラーは発生しません。ここに私の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>

ローカル 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>

4

2 に答える 2

2

リモートとは、同じ LAN を意味しますか、それともインターネット全体を意味しますか? IP 192.168.10.138 はプライベート LAN を指定するため、リモート マシンは 192.168.10.* のような同じネットワーク上のアドレスを持っている必要があります。

まず、Windows ファイアウォールでポート 3306 を開いていることを確認してください。

別のネットワークの場合は、ポートを転送するようにルーターを構成する必要があり、ルーターのパブリック IP に接続する必要があります。

同じ LAN である場合、mysql は、そのユーザー名とパスワードの組み合わせのリモート接続を受け入れるようにセットアップされていない可能性があります。

于 2012-08-19T06:54:43.370 に答える
0

通常の JPA では、プロジェクトごとに 1 つの persistence.xml のみを使用します。しかし、1 つのプロジェクトで複数の persistence.xml を使用できるSpring の JPAを試すことができます。複数の永続化ユニットを処理するには、 このリンクを参照してください。

于 2012-08-19T11:25:41.400 に答える