2010-02-20 7 views
2

Avec deux utilisateurs en utilisant simultanément mon application simple, je reçois exception:problème lien JPA Eclipse

Error Code: 0 
Call: SELECT ID, NAME, IMAGE FROM GameObjectTable ORDER BY ID ASC 
Query: ReadAllQuery(referenceClass=GameObject sql="SELECT ID, NAME, IMAGE FROM GameObjectTable ORDER BY ID ASC") 

Caused by: org.postgresql.util.PSQLException: There was In/Out error while sending to server 
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:283) 
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479) 
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367) 
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271) 
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeSelect(DatabaseAccessor.java:891) 
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:601) 
... 116 more 
Caused by: java.io.IOException: Stream closed 
at sun.nio.cs.StreamEncoder.ensureOpen(StreamEncoder.java:26) 
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:121) 
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212) 
at org.postgresql.core.PGStream.flush(PGStream.java:507) 
at org.postgresql.core.v3.QueryExecutorImpl.sendSync(QueryExecutorImpl.java:1107) 
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:256) 
... 121 more 

Méthode erreur cousing est:

@Repository 
public class GameObjectDao{ 
    @PersistenceContext(type = PersistenceContextType.EXTENDED) 
    protected EntityManager entityManager; 
    @Transactional 
    public List<String> getGameObjectNames() { 
    return getEntityManager().createQuery("select g.name from GameObject as g").getResultList(); 
... 
} 

}

gestionnaire de transactions de printemps:

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory"/> 
    <property name="dataSource" ref="dataSource"/> 
</bean> 
<tx:annotation-driven /> 

Qu'est-ce qui ne va pas?

// EDIT

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter"> 
      <property name="showSql" value="false"/> 
     </bean> 
    </property> 

    <property name="loadTimeWeaver"> 
     <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/> 
    </property> 
    <property name="jpaDialect"> 
     <bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaDialect "/> 
    </property> 

</bean> 

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.postgresql.Driver"/> 
    <property name="url" value="${db.url}"/> 
    <property name="username" value="${db.username}"/> 
    <property name="password" value="${db.password}"/> 
</bean> 

Dans erreur mysql est différent:

Caused by: java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at org.apache.wicket.session.DefaultPageFactory.createPage(DefaultPageFactory.java:192) 
... 69 more 
    Caused by: java.lang.NullPointerException 
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:1646) 
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:1622) 
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1332) 
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeSelect(DatabaseAccessor.java:891) 
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:601) 
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:529) 
at org.eclipse.persistence.internal.sessions.AbstractSession.executeCall(AbstractSession.java:914) 
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:205) 
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:191) 
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:262) 
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.selectAllRows(DatasourceCallQueryMechanism.java:618) 
at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectAllRowsFromTable(ExpressionQueryMechanism.java:2537) 
at org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectAllRows(ExpressionQueryMechanism.java:2496) 
at org.eclipse.persistence.queries.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:455) 
at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:997) 
at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:675) 
at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:958) 
at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:432) 
at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1021) 
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2863) 
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1225) 
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1207) 
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1181) 
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeReadQuery(EJBQueryImpl.java:453) 
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getResultList(EJBQueryImpl.java:669) 
+0

paramètres de connexion-pool, le cas échéant? – Bozho

Répondre

0

Il semble que la connexion de base de données est fermée par la première requête et la seconde requête récupère la connexion fermée à partir de la piscine et échoue. A quoi ressemble votre définition de source de données?

+0

Je viens d'ajouter des définitions de beans – nablik

1

Si la première exception se traduit (comme je devine):

org.postgresql.util.PSQLException: An I/O error occured while sending to the backend. 

Ensuite, il est très probablement pas un problème EclipseLink mais une question PostgreSQL.

Régler dans postgresql.conf sur le serveur et reload:

log_statement=all 
log_min_error_statement=ERROR 
log_min_messages=ERROR 
log_connections=on 
log_disconnections=on 

Vérifiez ensuite les journaux de serveur et mettre à jour votre question avec un message suspect (et les lignes qui l'entourent).

+0

J'ai changé postgresql.conf et redémarrer le serveur de base de données. Ensuite, j'ai répliqué une erreur dans mon application, mais rien de suspect ne s'est produit dans les journaux postgresql. Seules les informations sur les requêtes, les transactions - pas d'erreurs. – nablik

+0

Je viens de tester mysql -> dans la même erreur de situation, mais sur cette base de données null pointeur:/ – nablik

+0

Bizarre. Qu'est-ce que le champ IMAGE? Un BLOB? –