Хорошо ли OpenJPA работает с Glassfish?

Кто-нибудь успешно использует OpenJPA с Glassfish?

Я пытаюсь использовать OpenJPA 2.1 с Open Source Glassfish 3.1. Я выполнил инструкции по интеграции этих двух здесь -> http://weblogs.java.net/blog/ss141213/archive/2006/07/using_openjpa_a.html

У меня есть очень простой проект EJB в Eclipse Indigo со следующим:

  • com.rares.test.Person - @Entity
  • com.rares.test.PersonManager - interface
  • com.rares.test.PersonDao - @Stateless

Однако, когда Я пытаюсь развернуть и получаю исключение ClassNotFoundException на моем Person @Entity. Жалоба, по-видимому, связана с параметром Person в методе создания, который реализуется в моем PersonDao (см. Весь код ниже).

Я пробовал тот же проект без указания поставщика в моем persistence.xml, и проект работает нормально ( может сохранить Person @Entity в таблице PERSON в MySql). Думаю, я использую EclipseLink, если не указываю поставщика (поправьте меня, если я ошибаюсь). Это наводит меня на мысль, что я неправильно настроил OpenJPA с Glassfish.

Stack Trace

Caused by: java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: com.rares.test.Person
    at serp.util.Strings.toClass(Strings.java:164)
    at serp.util.Strings.toClass(Strings.java:108)
    at serp.bytecode.BCClass.getType(BCClass.java:566)
    at org.apache.openjpa.enhance.PCEnhancer.(PCEnhancer.java:283)
    at org.apache.openjpa.enhance.PCEnhancer.(PCEnhancer.java:254)
    at org.apache.openjpa.enhance.PCClassFileTransformer.transform0(PCClassFileTransformer.java:144)
    at org.apache.openjpa.enhance.PCClassFileTransformer.transform(PCClassFileTransformer.java:124)
    at org.apache.openjpa.persistence.PersistenceProviderImpl$ClassTransformerImpl.transform(PersistenceProviderImpl.java:294)
    at org.glassfish.persistence.jpa.ServerProviderContainerContractInfo$1.transform(ServerProviderContainerContractInfo.java:98)
    at com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:742)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
    at java.lang.Class.privateGetPublicMethods(Class.java:2547)
    at java.lang.Class.getMethods(Class.java:1410)
    at com.sun.enterprise.deployment.EjbDescriptor.addAllInterfaceMethodsIn(EjbDescriptor.java:2327)
    at com.sun.enterprise.deployment.EjbDescriptor.getLocalRemoteBusinessMethodDescriptors(EjbDescriptor.java:2290)
    ... 40 more

com.rares.test.Person

@Entity
@Table (name="PERSON")
public class Person implements Serializable {
    private static final long serialVersionUID = 3707476467775531463L;

    @Id
    @GeneratedValue (strategy=GenerationType.IDENTITY)
    @Column private Long id;
    @Column private String name;

com.rares.test.PersonManager

public interface PersonManager {
    void create (com.rares.test.Person p);
}

com.rares.test. PersonDao

@Stateless
public class PersonDao implements PersonManager {
    @PersistenceContext (unitName="RarePersistUnit")
    protected EntityManager mgr;

    @Override
    public void create(com.rares.test.Person p) {
        mgr.persist(p); 
    }

}

persistence.xml


    
        org.apache.openjpa.persistence.PersistenceProviderImpl
        jdbc/RaresMySql
        com.rares.test.Person        
        

        
    

5
задан AR3Y35 17 July 2011 в 04:54
поделиться