Wygląda na to, że zasoby nie są dostępne dla metody Singleton @Predestroy.Zasób niedostępny w @Singleton @Predestroy method
@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();
}
}
Wezwanie do getConnection() kończy się błędem "No Pool Meta Data object associated with the pool
". Zauważ, że wywołanie getConnection() zakończyło się powodzeniem w metodach @PostConstruct.
Czy to błąd w implementacji serwera aplikacji? Jeśli nie, jaki jest najbardziej elegancki sposób na opuszczenie tymczasowych stołów?
(przy użyciu przeźroczkom 4.1.1 + Derby DB Źródłem danych jest tworzona przeźroczkom-resources.xml rozmieszczone z EAR
<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>
).
Update:
utworzonego raport o błędzie w GlassFish https://java.net/jira/browse/GLASSFISH-21476.