Java EE:带有Derby,持久性问题的EclipseLink和JTA

时间:2013-02-23 21:36:09

标签: java-ee jpa eclipselink jta

我是Java EE入门新手,我正在尝试在NetBeans中使用glassfish和Derby部署示例应用程序,但我遇到了这个错误:

Exception [EclipseLink-7060] (Eclipse Persistence Services - 2.2.0.v20110202-r8913):
org.eclipse.persistence.exceptions.ValidationExceptionException Description: 
Cannot acquire data source [jdbc/jpaintro].Internal Exception:
 javax.naming.NamingException: Lookup failed for 'jdbc/jpaintro' in SerialContext
[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory,
 java.naming.factory.url.pkgs=com.sun.enterprise.naming,
 java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl}
[Root exception is javax.naming.NamingException: 
Failed to look up ConnectorDescriptor from JNDI 
[Root exception is com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: 
Error in creating active RAR]]

我有一个具有两个属性的实体Customer:FirstName和LastName,我已经成功生成了JPA控制器并且选中了JTA选项(使用NetBeans)。这是我的persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">

   <persistence-unit name="jtaAppPU" transaction-type="JTA">
      <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>jdbc/monDB</jta-data-source>
      <exclude-unlisted-classes>false</exclude-unlisted-classes>
      <properties>
       <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
      </properties>
   </persistence-unit>
  </persistence>

我正在尝试使用此Main类文件测试代码:

public class jtaMain {

public static void main(String[] args) throws NamingException, NotSupportedException, SystemException, RollbackFailureException, Exception {

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("foo");

    UserTransaction ut = (UserTransaction) new InitialContext().lookup("java:comp/UserTransaction");

    CustomerJpaController cjc = new CustomerJpaController(ut,emf);

    Customer c = new Customer();

    c.setFirstName("fname");

    c.setLastName("lname");

    cjc.create(c);

  }
}

那我错过了什么?要知道在persistence.xml中使用Resource_Local是完美的,但我不能让它与JTA一起工作:(

0 个答案:

没有答案