как указать загрузчик динамического класса с помощью ссылки eclipse

Среда: веб-сервер Tomcat, eclipselink-2.4.1 (Juno) JPA, Odata4j. Я делаю JPA (создание динамических объектов из таблицы) с помощью ссылки eclipse. Мой файл persistence.xml выглядит так

<persistence-unit name="abcLink"
        transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <mapping-file>META-INF/eclipselink-orm.xml</mapping-file>           
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/netspectiveauthentication?zeroDateTimeBehavior=convertToNull"/>
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="" />
            <property name="eclipselink.ddl-generation" value="create-tables" />
            <property name="eclipselink.logging.level" value="INFO" />
            <property name="eclipselink.logging.exceptions" value="true" />     
        </properties>
    </persistence-unit> 

и в классе провайдера

String persistenceUnitName = "abcLink";      
          EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnitName,properties);
            emf.createEntityManager();                   
            return new JPAProducer(emf, "abcd", 20);

Я использую это для реализации ODATA4j, поэтому свойства будут получены путем переопределения функции создания ODataProducer во время работы. Я получаю следующую ошибку.

javax.persistence.PersistenceException: Exception [EclipseLink-28017] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Unable to predeploy PersistenceUnit [AuthenticationServiceEclipseMysqlLink] in invalid state [DeployFailed].
Internal Exception: javax.persistence.PersistenceException: Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Deployment of PersistenceUnit [AuthenticationServiceEclipseMysqlLink] failed. Close all factories for this PersistenceUnit.
Internal Exception: Exception [EclipseLink-7328] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.ValidationException
Exception Description: When using VIRTUAL access a DynamicClassLoader must be provided when creating the entity manager factory using the eclipselink property [eclipselink.classloader]. That is, createEntityManagerFactory(String persistenceUnitName, Map properties) and add a new DynamicClassLoader() to the Map properties.
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:1226)
    at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:134)
    at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source)

Я думаю, что ошибка ясна, но я хочу знать, как я могу дать динамический загрузчик классов через свойства. или любой другой способ избавиться от этой ошибки.


person Abdul    schedule 21.02.2013    source источник


Ответы (1)


Взгляните на этот пример в начале метода main.

person gcvt    schedule 21.02.2013
comment
Спасибо за образец. Я установил загрузчик классов с помощью файла примера ur. после этого я получил ошибку, которая указывает на bugs.eclipse.org/bugs/ show_bug.cgi?id=397283. Так что никакого прогресса с динамикой. временно прекратил динамическую, теперь проверяю со статическими классами. В любом случае, не могли бы вы подсказать, где я могу найти такие примеры. - person Abdul; 22.02.2013
comment
Google :) Серьезно, вы должны определить подстроку сообщения об ошибке, содержащую важные ключевые слова, и погуглить подстроку. Например: google.com/ - person gcvt; 22.02.2013