Question

avec mon programme RCP j'ai le problème que je veux avoir plus d'une copie en cours d'exécution sur mon PC. La première instance fonctionne très bien. Si je commence à la deuxième instance, tout va bien jusqu'à ce que je veux accéder à la base de données.

En utilisant ce code:

..    
Map properties = new HashMap();
            properties.put("javax.persistence.jdbc.driver", dbDriver);
            properties.put("javax.persistence.jdbc.url", dbUrl);
            properties.put("javax.persistence.jdbc.user", dbUser);
            properties.put("javax.persistence.jdbc.password", dbPass);
            try {
                factory = Persistence.createEntityManagerFactory(
                        PERSISTENCE_UNIT_NAME, properties);
            } catch (Exception e) {
                System.out.println(e);
            }
            em=factory.createEntityManager(); // the second instance stops here
    ...

avec un persistence.xml de

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
    <persistence-unit name="default">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 

        <class>myclasshere</class>


        <properties>
            <property name="eclipselink.ddl-generation" value="create-tables" />
            <property name="eclipselink.ddl-generation.output-mode" value="database" />     

            <property name="eclipselink.jdbc.read-connections.min" value="1" />
            <property name="eclipselink.jdbc.write-connections.min" value="1" />
            <property name="eclipselink.jdbc.batch-writing" value="JDBC" />
            <property name="eclipselink.logging.level" value="SEVERE" />
            <property name="eclipselink.logging.timestamp" value="false" />
            <property name="eclipselink.logging.session" value="false" />
            <property name="eclipselink.logging.thread" value="false" />    
        </properties>
    </persistence-unit>
</persistence>

Les stalles du programme / ne continue pas en deuxième instance au-delà de cette étape:

em = factory.createEntityManager ();

Débogage l'étape du programme par étape m'a montré, que rien ne se passe à ce moment. le programme fonctionne peut-être dans un délai d'attente. Je nai été wainting pour plus de 1 minute ....

Avez-vous des indices qui pourraient faire en sorte que ce pourrait stalle?

Était-ce utile?

La solution

Dans le débogueur, arrêtez toutes les discussions (sélectionnez l'application et cliquez sur le bouton de pause), puis vérifier quel thread se bloque dans Object.wait(). L'un d'eux doit être lié à votre problème. Vérifiez les traces de pile pour les instances de EclipseLink pour savoir lequel. Cela pourrait vous donner une idée de ce qui se passe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top