سؤال

أحاول تطوير مشروع JPA على IBM RAD. ويمكنني تشغيله على Webpshere بنجاح ، لكن المشكلة هي أن جهازتي قديم جدًا. لذا فإن الانتشار في حاوية Java EE ليس معقولًا. وأريد تشغيله على jse. لكن يعطي خطأً التالي:

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)

ما أفتقده؟

بواسطة my perfect.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 أو حتى أثناء التجميع. يمكنك معرفة المزيد حول هذا الموضوع هنا:

"تتمثل الطريقة الثانية والمصدرة على تحسين وقت التشغيل في توفير JavaAgent عند إطلاق JVM التي سيتم تشغيل OpenJPA."

نصائح أخرى

لقد مررت للتو بممارسة الحصول على OpenJPA 2.1.0 لتشغيل على Tomcat 7.0. لم أتمكن ببساطة من الحصول على تعزيز وقت التشغيل للعمل في ظل Tomcat ، لذا استسلمت وقررت استخدام تعزيز وقت البناء. أقوم بتطوير الكود الخاص بي تحت Eclipse ، لذا اتبعت التعليمات هنا:

http://openjpa.apache.org/enhancement-with-eclipse.html

لاحظ أن الإرشادات الواردة في هذه الصفحة مخصصة لمشاريع Java العامة. إذا كنت تعمل مع مشاريع الويب الديناميكية ، فتأكد من تحديد وسيطة دليل الإنشاء بشكل صحيح. لقد استخدمت -dbuild.dir = الفئات/الفئات التي هي الموقع النموذجي للرمز المترجم.

واحد آخر مزعج يجب أن تعيش معه. يجب عليك استدعاء المنشئ يدويًا باستخدام عنصر قائمة "Project> Build Project". عندما يعمل المحسن ، فإنه يعدل الفصول التي تم بناؤها مسبقًا. وبالتالي ، تحتاج إلى ضرب F5 أو تحديث للمشروع قبل النشر إلى Tomcat.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top