質問
私は、IBM RADのJPAプロジェクトを開発してみてください。そして、私は成功しWebpshere上でそれを実行することができ、 しかし、問題は、私のマシンはかなり古いです。だから、のJava EEコンテナに配備することはできません 私はJSE.But上でそれを実行したいreasonable.Andそれはエラー以下与えます:
94 test INFO [main] openjpa.Runtime - Starting OpenJPA 1.2.1-SNAPSHOT
235 test INFO [main] openjpa.jdbc.JDBC - Using dictionary class "com.ibm.ws.persistence.jdbc.sql.DB2Dictionary".
1797 test WARN [main] openjpa.Enhance - This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "[class Customer]".
Exception in thread "main" <openjpa-1.2.1-SNAPSHOT-r422266:686069 fatal user error> org.apache.openjpa.persistence.ArgumentException: The type "class Customer" has not been enhanced.
at org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1650)
at org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1624)
at org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:717)
at org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:616)
at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:541)
at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:308)
at org.apache.openjpa.kernel.BrokerImpl.newObjectId(BrokerImpl.java:1114)
at org.apache.openjpa.kernel.DelegatingBroker.newObjectId(DelegatingBroker.java:268)
at org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:451)
at deneme.main(deneme.java:21)
私は何が欠けている?
私のpersistent.xmlがあることでます:
**<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
<persistence-unit name="test" transaction-type="RESOURCE_LOCAL">
<provider>
com.ibm.websphere.persistence.PersistenceProviderImpl
</provider>
<class>Customer</class>
<properties>
<property name="openjpa.ConnectionDriverName" value="com.ibm.db2.jcc.DB2Driver"/>
<property name="openjpa.ConnectionURL" value="jdbc:db2://localhost:50000/PARUD:retrieveMessagesFromServerOnGetMessage=true;"/>
<property name="openjpa.ConnectionUserName" value="db2admin"/>
<property name="openjpa.ConnectionPassword" value="xxxxx"/>
<property name="openjpa.jdbc.Schema" value="POOL"/>
</properties>
</persistence-unit>
</persistence>**
解決
ジャストポインタ: あなたは、例えば、あなたのクラスを強化する必要がありますでランタイム経由-javaagent:yourlib.jar またはコンパイルさえながら。あなたは、このトピックの詳細を学ぶことができここをます:
「JVMを起動するときに、第2および推奨される方法GETランタイム拡張機能は、OpenJPAのはランを予定していること。javaagentを提供することです」
他のヒント
私はただのTomcat 7.0上で実行するようにOpenJPAの2.1.0を得るための運動を通り抜けました。私はあきらめたと使用ビルド時の向上に決めたので、私は、Tomcatの下で仕事にランタイム・強化を得るために、単純にできませんでした。私はここに指示に従ったので、私は、Eclipseの下で私のコードを開発しています:
http://openjpa.apache.org/enhancement-with-eclipse.html
は、このページの指示は、一般的なJavaプロジェクトのためのものであることに注意してください。あなたは動的Webプロジェクトで作業している場合、正しくビルドディレクトリ引数を指定してください。私は-Dbuild.dir =コンパイルされたコードのための典型的な場所であるビルド/クラスを使用する。
あなたが生きているもう一つの迷惑な癖。手動でビルダー呼び出し「プロジェクト>ビルドプロジェクト」メニュー項目を使用しなければなりません。エンハンサーが実行されると、それは以前に構築されたクラスを変更します。したがって、あなたがTomcatに公開する前に、プロジェクトのためにF5または[更新]をクリックする必要があります。