Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试持久化和EJB时出现异常_Java_Jpa_Apache Tomee_Ejb 3.2 - Fatal编程技术网

Java 尝试持久化和EJB时出现异常

Java 尝试持久化和EJB时出现异常,java,jpa,apache-tomee,ejb-3.2,Java,Jpa,Apache Tomee,Ejb 3.2,我是EJB3的新手 我已经创建了一个dao用户 @Entity @Table(name = "t_user") public class User implements Serializable { /** * */ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Colu

我是EJB3的新手

我已经创建了一个dao用户

@Entity
@Table(name = "t_user")
public class User implements Serializable {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;
    @Column(name = "name")
    private String name;

    private String street;
    private int houseNumber;

    @Column(name = "email") 
    private String email;
//... getters and setters

}
无状态EJB:

@Stateless
public class ItemFacade implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    @PersistenceContext(unitName = "databaseName", type = PersistenceContextType.EXTENDED)
    private EntityManager em;
    @PersistenceUnit
    private EntityManagerFactory emf;

    public void create(User user) {
        emf = Persistence.createEntityManagerFactory("databaseName");
        em = emf.createEntityManager();
        em.persist(user);
    }
}
托管bean:

@ManagedBean
@RequestScoped
public class UserBean implements Serializable {
    private static final long serialVersionUID = 1L;
    private User user = new User();
    @EJB
    private ItemFacade itemFacade;
    public void save(){   
        itemFacade = new ItemFacade();
        itemFacade.create(this.user);
    }
    //....
}
persistence.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
        <persistence-unit name="databaseName" >
          <jta-data-source>TestDS</jta-data-source>
        </persistence-unit>
</persistence>

测试
以及tomee.xml:

<?xml version="1.0" encoding="UTF-8"?>
<tomee>
  <!-- see http://tomee.apache.org/containers-and-resources.html -->

  <!-- activate next line to be able to deploy applications in apps -->
  <!-- <Deployments dir="apps" /> -->
    <Resource id="TestDS" type="DataSource">
      JdbcDriver com.mysql.jdbc.Driver
      JdbcUrl jdbc:mysql://localhost:3306/databaseName
      UserName username
      Password password
      JtaManaged true
    </Resource>
</tomee>

JdbcDriver com.mysql.jdbc.Driver
JdbcUrl jdbc:mysql://localhost:3306/databaseName
用户名
密码
真的吗
但是,当我尝试持久化用户时,会出现以下异常:

Starting OpenJPA 2.4.0-nonfinal-1598334
may 23, 2015 2:33:39 PM com.sun.faces.lifecycle.ApplyRequestValuesPhase execute
ADVERTENCIA: <openjpa-2.4.0-nonfinal-1598334-r422266:1599166 fatal user error> org.apache.openjpa.persistence.ArgumentException: The persistence provider is attempting to use properties in the persistence.xml file to resolve the data source. A Java Database Connectivity (JDBC) driver or data source class name must be specified in the openjpa.ConnectionDriverName or javax.persistence.jdbc.driver property. The following properties are available in the configuration: "org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl@fdaf18ee". 
javax.el.ELException: <openjpa-2.4.0-nonfinal-1598334-r422266:1599166 fatal user error> org.apache.openjpa.persistence.ArgumentException: The persistence provider is attempting to use properties in the persistence.xml file to resolve the data source. A Java Database Connectivity (JDBC) driver or data source class name must be specified in the openjpa.ConnectionDriverName or javax.persistence.jdbc.driver property. The following properties are available in the configuration: "org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl@fdaf18ee". 
    at org.apache.el.parser.AstValue.invoke(AstValue.java:291)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
    at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:149)
    at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:813)
    at javax.faces.component.UICommand.broadcast(UICommand.java:300)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
    at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931)
    at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:105)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: <openjpa-2.4.0-nonfinal-1598334-r422266:1599166 fatal user error> org.apache.openjpa.persistence.ArgumentException: The persistence provider is attempting to use properties in the persistence.xml file to resolve the data source. A Java Database Connectivity (JDBC) driver or data source class name must be specified in the openjpa.ConnectionDriverName or javax.persistence.jdbc.driver property. The following properties are available in the configuration: "org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl@fdaf18ee". 
    at org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:72)
    at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:849)
    at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:602)
    at org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1518)
    at org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:535)
    at org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:460)
    at org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:121)
    at org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68)
    at org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83)
    at org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:967)
    at org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:958)
    at org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:642)
    at org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:202)
    at org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:155)
    at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:226)
    at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:153)
    at org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:59)
    at manager.ItemFacade.create(ItemFacade.java:35)
    at views.UserBean.save(UserWizard.java:48)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
    ... 34 more
启动OpenJPA 2.4.0-nonfinal-1598334
2015年5月23日下午2:33:39 com.sun.faces.lifecycle.applyRequestValuesPase执行
ADVERTENCIA:org.apache.openjpa.persistence.ArgumentException:持久性提供程序正在尝试使用persistence.xml文件中的属性解析数据源。必须在openjpa.ConnectionDriverName或javax.persistence.JDBC.driver属性中指定Java数据库连接(JDBC)驱动程序或数据源类名。以下属性在配置中可用:“org.apache.openjpa.jdbc.conf。JDBCConfigurationImpl@fdaf18ee". 
javax.el.ELException:org.apache.openjpa.persistence.ArgumentException:持久性提供程序正在尝试使用persistence.xml文件中的属性解析数据源。必须在openjpa.ConnectionDriverName或javax.persistence.JDBC.driver属性中指定Java数据库连接(JDBC)驱动程序或数据源类名。以下属性在配置中可用:“org.apache.openjpa.jdbc.conf。JDBCConfigurationImpl@fdaf18ee". 
位于org.apache.el.parser.AstValue.invoke(AstValue.java:291)
位于org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
位于javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:149)
位于javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
在javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:813)上
位于javax.faces.component.UICommand.broadcast(UICommand.java:300)
位于javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
位于javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931)
在com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
位于com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
在com.sun.faces.lifecycle.LifecycleImpl.execute上(LifecycleImpl.java:198)
位于javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
位于org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:105)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
位于org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
位于org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
位于org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
运行(Thread.java:745)
原因:org.apache.openjpa.persistence.ArgumentException:持久性提供程序正试图使用persistence.xml文件中的属性解析数据源。必须在openjpa.ConnectionDriverName或javax.persistence.JDBC.driver属性中指定Java数据库连接(JDBC)驱动程序或数据源类名。以下属性在配置中可用:“org.apache.openjpa.jdbc.conf。JDBCConfigurationImpl@fdaf18ee". 
位于org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:72)
位于org.apache.openjpa.jdbc.conf.jdbcconfigurationmpl.createConnectionFactory(jdbcconfigurationmpl.java:849)
位于org.apache.openjpa.jdbc.conf.jdbconfigurationmpl.getDBDictionaryInstance(jdbconfigurationmpl.java:602)
位于org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1518)
位于org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:535)
位于org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:460)
位于org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:121)
位于org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68)
在org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83)上
位于org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryI
@Stateless
public class ItemFacade {
  @PersistenceContext(unitName = "databaseName")
  private EntityManager em;

  public void create(User user) {
      em.persist(user);
  }
}