Tomcat 无法在EclipseLink中获取数据源

Tomcat 无法在EclipseLink中获取数据源,tomcat,jpa,eclipselink,datasource,jndi,Tomcat,Jpa,Eclipselink,Datasource,Jndi,我有一个Java EE中的Web应用程序(Netbeans+Maven),并在本地安装了Tomcat 8,我的应用程序运行Jersey的Web服务。我正在尝试添加EclipseLink以实现持久性(我正在访问的数据库是一个远程OracleDB),但我无法正确配置它,每次尝试创建实体时都会遇到许多异常 这是我的代码: EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME

我有一个Java EE中的Web应用程序(Netbeans+Maven),并在本地安装了Tomcat 8,我的应用程序运行Jersey的Web服务。我正在尝试添加EclipseLink以实现持久性(我正在访问的数据库是一个远程OracleDB),但我无法正确配置它,每次尝试创建实体时都会遇到许多异常

这是我的代码:

EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
EntityManager entityManager = factory.createEntityManager();
entityManager.getTransaction().begin();
它抛出

异常[EclipseLink-7060](Eclipse持久性服务-2.5.0.v20130507-3faac2b):org.Eclipse.Persistence.exceptions.ValidationException 异常描述:无法获取数据源[jdbc/oracle]。 内部异常:javax.naming.NameNotFoundException:Name[jdbc/oracle]未在此上下文中绑定。找不到[jdbc]

我花了一天大部分时间配置web.xml、context.xml和persistence.xml,但什么都没用

编辑: 当我加上

<properties>
  <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@11.22.333.444:5555:XE"/>
  <property name="javax.persistence.jdbc.user" value="xxxx"/>
  <property name="javax.persistence.jdbc.password" value="xxxx"/>-->
  <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>

  <property name="eclipselink.logging.level" value="WARNING"/>
  <property name="javax.persistence.schema-generation.database.action" value="create"/>
</properties>

-->
对于persistence.xml,我得到以下信息

javax.persistence.PersistenceException:java.lang.UnsupportedOperationException:BasicDataSource不支持 org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:762) org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:204) org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:182) org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getDatabaseSession(EntityManagerFactoryImpl.java:527) org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactoryImpl(PersistenceProvider.java:140) org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:177) persistence.persistence.createEntityManagerFactory(persistence.java:79) persistence.persistence.createEntityManagerFactory(persistence.java:54)


我做错了什么?

尝试使用
java:comp/env/jdbc/oracle
而不是
jdbc/oracle
到底在哪里?我的persistence.xml:org.eclipse.persistence.jpa.PersistenceProvider java:comp/env/jdbc/oracle中已经包含了这一点,包括persistence.xml、context.xml、server.xml,否则我们无法判断错误。如果使用容器的数据源,perstance.xml中提到的属性并不重要。如何在应用程序中指定JTA事务?如果在persistence.xml中指定javax.persistence.jdbc属性,则不应使用JTA,而应使用resource_local并自己控制事务(entityManager.getTransaction().begin()等)。有关如何在Tomcat中使用JTA进行设置的示例,请参见。