すべて、Hibernate を使用してローカルの MySQL データベース インスタンスと JPA で動作するように Google App Engine を構成しようとしています。セットアップ後、以前に議論されていることに気付いたソケットの問題があったため (http://stackoverflow.com/questions/10585140/gae-cloudsql-with-mysql-access-denied)、指示に従って問題を解決しようとしました。ただし、何らかの理由でEclipseが面倒なことをしており、前述の投稿で指示されているように、persistence.xmlファイルに加えた変更を消去します。
これをテストするために、新しい Eclipse (Juno) をインストールし、Google プラグインをロードしました。JPA を追加するテスト アプリケーションを作成し、休止状態を使用するように設定します。アプリのプロパティをグーグルで検索し、ローカルmysqlを使用していることを確認します
ここまでは順調ですね。生成された persistence.xml を見ると、次のように表示されます。
<?xml version="1.0" encoding="UTF-8" ?>
<persistence 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_1_0.xsd" version="1.0">
<persistence-unit name="transactions-optional" transaction-type="RESOURCE_LOCAL">
<provider></provider>
<properties>
<property name="datanucleus.NontransactionalRead" value="true"/>
<property name="datanucleus.NontransactionalWrite" value="true"/>
<property name="datanucleus.ConnectionURL" value="appengine"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/shelem?user=root&password=gandom"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="gandom"/>
</properties>
</persistence-unit>
</persistence>
ご覧のとおり、プロバイダーは何も設定されておらず (間違っています)、URL とドライバーの属性も間違っています (前述の投稿によると)。アプリケーションをそのまま実行すると、上記の投稿に記載されているソケット エラー例外が発生するため、persistence.xml ファイルを次のように手動で変更します (上記の投稿に従って)。
<?xml version="1.0" encoding="UTF-8" ?>
<persistence 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_1_0.xsd" version="1.0">
<persistence-unit name="transactions-optional" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<properties>
<property name="datanucleus.NontransactionalRead" value="true"/>
<property name="datanucleus.NontransactionalWrite" value="true"/>
<property name="datanucleus.ConnectionURL" value="appengine"/>
<property name="javax.persistence.jdbc.driver" value="com.google.appengine.api.rdbms.AppEngineDriver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:google:rdbms://localhost/Guardian"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="gandom"/>
</properties>
</persistence-unit>
</persistence>
その後、クレイジーなことが起こります!これを実行してアプリケーションをクリーンアップ/ビルドするとすぐに、Eclipse が変更を消去し、persistence.xml ファイルを手動で変更する前の状態に戻します。.....興味深いことに、コメントを追加するか、その他のものを変更してください。これらの変更は保持され、失われないため、何らかの理由でEclipseは私の問題を修正するために提案されたコードのみを置き換えるようです!!!
頭がおかしくなりました、誰かこれを見たことがありますか?助言がありますか?
コメントしてくれてありがとう。
アミール