# JPA Projekt Exception



## Karkrau (12. Mai 2016)

Hallo,

ich habe ein Projekt angelegt welches mit MySQL verbunden ist.
Bei meinen Kollegen läuft es auch bei mir gibt es jedoch einen Fehler aus wenn ich zum Beispiel versuche Daten anzulegen.

Exception Description: A Exclusive Connection cannot be used for ClientSession reads without isolated data.  Update the ConnectionPolicy used to remove ExclusiveConnection configuration or the project to set certain data to be exclusive.

Kann jemand mit dieser Exception was anfangen?


----------



## BuckRogers (12. Mai 2016)

Hi,

dazu bräuchte man eine genauere Beschreibung. Zum Beispiel WANN tritt das Problem auf und vor allem solltest dur bitte die komplette Exception im CodeBlock posten. Danke


----------



## Karkrau (12. Mai 2016)

Die Exception tritt eigtl bei allem auf sobald ich versuche per EntityManager die Daten in den Tabellen zu verändern (anlegen, löschen etc.).
Außerdem funktioniert der exakte Code bei anderen auch.
Die Exception Description habe ich per System.err.println() bekommen als ich das ganze gecatched habe. Wenn ich den raus mache kommt folgender Fehler:


```
Exception in thread "AWT-EventQueue-0" Local Exception Stack:
Exception [EclipseLink-7115] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.ValidationException
Exception Description: A Exclusive Connection cannot be used for ClientSession reads without isolated data.  Update the ConnectionPolicy used to remove ExclusiveConnection configuration or the project to set certain data to be exclusive.
    at org.eclipse.persistence.exceptions.ValidationException.clientSessionCanNotUseExclusiveConnection(ValidationException.java:664)
    at org.eclipse.persistence.sessions.server.ServerSession.acquireClientSession(ServerSession.java:390)
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.getActivePersistenceContext(EntityManagerImpl.java:1933)
    at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.begin(EntityTransactionImpl.java:93)
    at gui.GeschaeftsstelleUI.jButton3ActionPerformed(GeschaeftsstelleUI.java:566)
    at gui.GeschaeftsstelleUI.access$2(GeschaeftsstelleUI.java:559)
    at gui.GeschaeftsstelleUI$3.actionPerformed(GeschaeftsstelleUI.java:234)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
```

Als Beispiel für Code:

```
try{
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("wf_projekt");
            EntityManager em = emf.createEntityManager();
          
            em.getTransaction().begin();
            Geschaeftsstelle geschaeftsstelle = new Geschaeftsstelle();
          
            geschaeftsstelle.setStrasse(jTextField4.getText());
            geschaeftsstelle.setPlz(Integer.parseInt(jTextField5.getText()));
            geschaeftsstelle.setWohnort(jTextField6.getText());
          
            em.persist(geschaeftsstelle);
            em.getTransaction().commit();
          
            em.close();
            emf.close();
      
            JOptionPane.showMessageDialog(null, "Daten angelegt");
        }
        catch(Exception e){
            JOptionPane.showMessageDialog(null, "Fehler");
            System.err.println(e.getMessage());
        }
```


----------



## BuckRogers (12. Mai 2016)

Ok, 

grundsätzliches ist es erstmal doof alle Eceptions zu catchen. Man sollte besser alle einzelnen Exceptions catchen um dann auf den Fehler zu reagieren.
Ich vermute es is tein Konfigurationsproblem. Da ja der Code bei anderen funktioniert, wirst du wahrscheinlich deine Persistence-Konfiguration anders angelegt haben...


----------



## BuckRogers (12. Mai 2016)

hast du diesen Eintrag in der Config?


```
property name="eclipselink.jdbc.exclusive-connection.mode" value="Always"/>
```


----------



## Flown (12. Mai 2016)

Code bitte in Code-Tags setzen: [code=java]//JAVA CODE HERE [/code]

OT: Wenn ich für jedes mal 1€ bekommen würde, wenn ich das schreiben und ändern muss ...


----------



## Karkrau (12. Mai 2016)

Tut mir Leid ich habe das Forum bisher noch nicht benutzt

Aber in meiner persistence.xml gibt es folgende Properties:


```
<properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/test"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="eclipselink.jdbc.exclusive-connection.mode" value="Isolated"/>
        </properties>
```


----------



## Karkrau (12. Mai 2016)

Also ich habe das Problem gefunden als ich gerade die persistence datei mit der meines Kollegen verglichen habe. Ich musste die letzte Zeile rauslöschen.

Ich danke dir für deine Hilfe!


----------

