Кто-нибудь успешно использует 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 со следующим:
Однако, когда Я пытаюсь развернуть и получаю исключение ClassNotFoundException на моем Person @Entity. Жалоба, по-видимому, связана с параметром Person в методе создания, который реализуется в моем PersonDao (см. Весь код ниже).
Я пробовал тот же проект без указания поставщика в моем persistence.xml, и проект работает нормально ( может сохранить Person @Entity в таблице PERSON в MySql). Думаю, я использую EclipseLink, если не указываю поставщика (поправьте меня, если я ошибаюсь). Это наводит меня на мысль, что я неправильно настроил OpenJPA с Glassfish.
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
@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;
public interface PersonManager {
void create (com.rares.test.Person p);
}
@Stateless
public class PersonDao implements PersonManager {
@PersistenceContext (unitName="RarePersistUnit")
protected EntityManager mgr;
@Override
public void create(com.rares.test.Person p) {
mgr.persist(p);
}
}
org.apache.openjpa.persistence.PersistenceProviderImpl
jdbc/RaresMySql
com.rares.test.Person