使用我的RCP程序我遇到的问题是我希望在PC上运行多个副本。第一个例子非常好。 如果我启动第二个实例,一切都很好,直到我想访问数据库。
使用此代码:
..
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
...
使用persistence.xml
<?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>
程序在此步骤之后的第二个实例中停止/不继续:
发射= factory.createEntityManager();
逐步调试程序向我展示,此时没有任何反应。也许程序会暂停。我没有昏倒超过1分钟......
你有什么线索可能导致这个失速吗?
答案 0 :(得分:2)
在调试器中,停止所有线程(选择应用程序并单击暂停按钮),然后检查Object.wait()
中挂起的线程。其中一个必须与您的问题相关。检查堆栈跟踪以查找EclipseLink的实例以找出哪一个。这可能会让你知道发生了什么。