Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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 JPA EclipseLink数据库异常_Java_Eclipse_Jpa_Eclipselink_Connectexception - Fatal编程技术网

Java JPA EclipseLink数据库异常

Java JPA EclipseLink数据库异常,java,eclipse,jpa,eclipselink,connectexception,Java,Eclipse,Jpa,Eclipselink,Connectexception,尝试使用eclipselink运行一个简单的JPA应用程序。我将persistence.xml存储在src/META-INF/中,并将“eclipselink-2.3.0.jar”、“javax.persistence.jar”和“mysql-connector-java-5.0.4-bin.jar”导入项目(使用Eclipse IDE) Server.java public class Server { private EntityManagerFactory emFactory; Serv

尝试使用eclipselink运行一个简单的JPA应用程序。我将persistence.xml存储在src/META-INF/中,并将“eclipselink-2.3.0.jar”、“javax.persistence.jar”和“mysql-connector-java-5.0.4-bin.jar”导入项目(使用Eclipse IDE)

Server.java

public class Server {
private EntityManagerFactory emFactory;

Server() {
    super();
    emFactory =  Persistence.createEntityManagerFactory("test");
}

public void newAccount(String name){
    EntityManager em = null;
    try {
        em = beginTransaction();
        List<Account> existingAccounts = em.createNamedQuery("findAccountWithName", Account.class).setParameter("ownerName", name).getResultList();
        if (existingAccounts.size() != 0) {
            System.out.println("already exists"); return;
        }

        Account account = new Account(name, 5000);
        em.persist(account);
        System.out.println("Account " + name + " created");
    } finally { commitTransaction(em); }
}

private EntityManager beginTransaction() {
    EntityManager em = emFactory.createEntityManager();
    EntityTransaction transaction = em.getTransaction();
    transaction.begin();
    return em;
}

private void commitTransaction(EntityManager em) { em.getTransaction().commit(); }  

    public static void main(String[] args) {
    Server k = new Server();
    k.newAccount("Bob");
}
}
persistence.xml

<?xml version="1.0" encoding="UTF-8"?>

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         version="2.0">

<persistence-unit name="test" transaction-type="RESOURCE_LOCAL">
    <provider>
       org.eclipse.persistence.jpa.PersistenceProvider
    </provider>

    <class>Account</class>

      <properties>
        <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
    <property name="eclipselink.ddl-generation.output-mode" value="database"/>
        <property name="eclipselink.logging.level" value="INFO"/>
        <property name="javax.persistence.jdbc.password" value="javajava"/>
        <property name="javax.persistence.jdbc.user" value="root"/>
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/bank"/>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
    </properties>
</persistence-unit>
</persistence>

org.eclipse.persistence.jpa.PersistenceProvider
账户
输出

[EL Info]: 2013-12-19 16:32:36.467--ServerSession(1685940940)--EclipseLink, version: Eclipse Persistence Services - 2.3.0.v20110604-r9504
[EL Severe]: 2013-12-19 16:32:40.568--ServerSession(1685940940)--Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused: connect

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused: connect
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:276)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2666)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1531)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:98)
    at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:582)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:472)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:290)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:268)
    at Server.beginTransaction(Server.java:84)
    at Server.newAccount(Server.java:38)
    at Server.main(Server.java:30)


** END NESTED EXCEPTION **



Last packet sent to the server was 18 ms ago.
Error Code: 0
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324)
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:319)
    at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:138)
    at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:582)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:472)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:290)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:268)
    at Server.beginTransaction(Server.java:84)
    at Server.newAccount(Server.java:38)
    at Server.main(Server.java:30)
Caused by: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused: connect

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused: connect
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:276)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2666)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1531)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:98)
    at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:582)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:472)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:290)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:268)
    at Server.beginTransaction(Server.java:84)
    at Server.newAccount(Server.java:38)
    at Server.main(Server.java:30)


** END NESTED EXCEPTION **



Last packet sent to the server was 18 ms ago.
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2741)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1531)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:98)
    ... 11 more

Exception in thread "main" java.lang.NullPointerException
    at Server.commitTransaction(Server.java:90)
    at Server.newAccount(Server.java:47)
    at Server.main(Server.java:30)
[EL-Info]:2013-12-19 16:32:36.467——服务器会话(1685940940)——EclipseLink,版本:Eclipse持久性服务-2.3.0.v20110604-r9504
[EL Severe]:2013-12-19 16:32:40.568——服务器会话(1685940940)——本地异常堆栈:
异常[EclipseLink-4002](Eclipse持久性服务-2.3.0.v20110604-r9504):org.Eclipse.Persistence.exceptions.DatabaseException
内部异常:com.mysql.jdbc.CommunicationsException:由于基础异常导致的通信链路故障:
**开始嵌套异常**
java.net.SocketException
消息:java.net.ConnectException:连接被拒绝:连接
堆栈跟踪:
java.net.SocketException:java.net.ConnectException:连接被拒绝:连接
位于com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
在com.mysql.jdbc.MysqlIO上(MysqlIO.java:276)
在com.mysql.jdbc.Connection.createNewIO上(Connection.java:2666)
位于com.mysql.jdbc.Connection(Connection.java:1531)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
位于java.sql.DriverManager.getConnection(未知源)
位于java.sql.DriverManager.getConnection(未知源)
位于org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:98)
位于org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
位于org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginandetectdatasource(DatabaseSessionImpl.java:582)
位于org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
位于org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:472)
位于org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
位于org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
位于org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:290)
位于org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:268)
在Server.beginTransaction(Server.java:84)
在Server.newAccount(Server.java:38)
位于Server.main(Server.java:30)
**结束嵌套异常**
发送到服务器的最后一个数据包是18毫秒前。
错误代码:0
位于org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324)
位于org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:319)
位于org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:138)
位于org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
位于org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginandetectdatasource(DatabaseSessionImpl.java:582)
位于org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
位于org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:472)
位于org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
位于org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
位于org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:290)
位于org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:268)
在Server.beginTransaction(Server.java:84)
在Server.newAccount(Server.java:38)
位于Server.main(Server.java:30)
原因:com.mysql.jdbc.CommunicationsException:由于基础异常导致的通信链路故障:
**开始嵌套异常**
java.net.SocketException
消息:java.net.ConnectException:连接被拒绝:连接
堆栈跟踪:
java.net.SocketException:java.net.ConnectException:连接被拒绝:连接
位于com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
在com.mysql.jdbc.MysqlIO上(MysqlIO.java:276)
在com.mysql.jdbc.Connection.createNewIO上(Connection.java:2666)
位于com.mysql.jdbc.Connection(Connection.java:1531)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
位于java.sql.DriverManager.getConnection(未知源)
位于java.sql.DriverManager.getConnection(未知源)
位于org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:98)
位于org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
位于org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginandetectdatasource(DatabaseSessionImpl.java:582)
位于org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
位于org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:472)
位于org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
位于org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
在org.eclipse.persistence.internal上。
[EL Info]: 2013-12-19 16:32:36.467--ServerSession(1685940940)--EclipseLink, version: Eclipse Persistence Services - 2.3.0.v20110604-r9504
[EL Severe]: 2013-12-19 16:32:40.568--ServerSession(1685940940)--Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused: connect

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused: connect
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:276)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2666)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1531)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:98)
    at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:582)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:472)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:290)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:268)
    at Server.beginTransaction(Server.java:84)
    at Server.newAccount(Server.java:38)
    at Server.main(Server.java:30)


** END NESTED EXCEPTION **



Last packet sent to the server was 18 ms ago.
Error Code: 0
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324)
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:319)
    at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:138)
    at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:582)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:472)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:290)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:268)
    at Server.beginTransaction(Server.java:84)
    at Server.newAccount(Server.java:38)
    at Server.main(Server.java:30)
Caused by: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused: connect

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused: connect
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:276)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2666)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1531)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:98)
    at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:582)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:206)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:472)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:290)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:268)
    at Server.beginTransaction(Server.java:84)
    at Server.newAccount(Server.java:38)
    at Server.main(Server.java:30)


** END NESTED EXCEPTION **



Last packet sent to the server was 18 ms ago.
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2741)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1531)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:98)
    ... 11 more

Exception in thread "main" java.lang.NullPointerException
    at Server.commitTransaction(Server.java:90)
    at Server.newAccount(Server.java:47)
    at Server.main(Server.java:30)