Kir*_*han 6 java glassfish ejb-3.1
似乎资源不适用于Singleton的@Predestroy方法.
@PreDestroy
public void cleanup() {
logger.info("*** Application shutting down. Dropping temporary tables ***");
try {
connection = dataSource.getConnection();
Statement statement = connection.createStatement();
statement.execute("drop table TABLE1");
statement.execute("drop table TABLE2");
connection.close();
connection = null;
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
对getConnection()的调用失败,错误为" No Pool Meta Data object associated with the pool".请注意,在@PostConstruct方法中,getConnection()调用成功.
它是应用服务器实现中的Bug吗?如果没有,删除临时表的最优雅方法是什么?
(使用Glassfish 4.1.1 + Derby DB.使用与EAR一起部署的glassfish-resources.xml创建数据源
<resources>
<jdbc-resource pool-name="EmbeddedDerbyPool"
jndi-name="java:app/jdbc/ActionBazaarDS" />
<jdbc-connection-pool name="EmbeddedDerbyPool"
res-type="javax.sql.DataSource"
datasource-classname="org.apache.derby.jdbc.EmbeddedDataSource"
is-isolation-level-guaranteed="false">
<property name="databaseName" value="memory:action-bazaar-db"/>
<property name="createDatabase" value="create"/>
</jdbc-connection-pool>
</resources>
Run Code Online (Sandbox Code Playgroud)
)
更新:
我在GlassFish中创建了一个错误报告https://java.net/jira/browse/GLASSFISH-21476.
由于这是 a @Singleton,@PreDestroy大概只在上下文关闭时调用,因此可能已经dataSource存在destroyed/finalized/closed(这里不能具体,因为我不知道 的类型datasource),因此出现错误。
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |