Quando si inietta un'origine dati nell'applicazione e si ottiene una connessione invocando getConnection()
su di essa, si suppone che si chiuda la connessione?Iniezione origine dati in EJB
risposta
Anche se l'origine dati è di per sé il contenitore gestito, l'API richiede infatti al programmatore di chiudere le connessioni. Questo è diverso da un paio di altre risorse gestite dal contenitore (come il gestore di entità), in cui il contenitore si occupa della chiusura. Si noti che la chiusura qui nella maggior parte dei casi non in realtà chiude la connessione qui, ma restituisce la connessione a un pool di connessioni.
Come regola generale, se si utilizzano le risorse di fabbrica per ottenere una o più risorse da quelle che possono essere chiuse, è necessario chiuderle. Altrimenti il contenitore fa questo.
Dal Connection attrezzi AutoCloseable, è possibile utilizzare un blocco try-with-risorse per questo:
@Stateless
public class MyBean {
@Resource(lookup = "java:/app/datasource")
private DataSource dataSource;
public void doStuff() {
try (Connection connection = dataSource.getConnection()) {
// Work with connection here
} catch (SQLException e) {
throw new SomeRuntimeException(e);
}
}
}
Ovviamente, altrimenti si esaurirà il pool di connessione. E 'meglio farlo in blocco finally:
@Resource(mappedName="jndi/yourDatasource")
DataSource ds;
..
Connection conn = null;
try {
conn = ds.getConnection();
//PERFORM QUERY, ETC..
}
catch(SQLException ex) {
//EXCEPTION HANDLING
}
finally {
try {
if(conn != null)
conn.close();
}
catch(SQLException ex) {..}
}
- 1. JSF-bean gestito EJB iniezione
- 2. Iniezione di un EJB stateless in Servlet
- 3. Iniezione di un Logger in un EJB tramite CDI
- 4. CDI Iniezione di un EJB porta a NullPointerException
- 5. "Impossibile convertire ejbRef per EJB" sul CDI (Weld) iniezione di @Stateless EJB in @SessionScoped JSF2 fagiolo in Glassfish
- 6. Barattolo di iniezione e plug-in di origine primavera
- 7. Externalizing Grails Configurazione origine origine dati
- 8. Origine dati Reportviewer in asp.net-mvc
- 9. Nessuna opzione modello dati entità in Configurazione guidata origine dati
- 10. Devo usare @EJB o @Inject
- 11. @Singleton in java EJB
- 12. Multi-threading in EJB
- 13. Oggetto proxy in EJB
- 14. EJB - Ricerca fallita per 'ejb/BookRequestBean'
- 15. Iniezione di dipendenza in JavaScript? (Per i dati-driven visualizzazione)
- 16. Java EE 6 Iniezione in classe astratta
- 17. È possibile utilizzare EJB 3.1 in applicazioni desktop?
- 18. Separazione origine dati in un'altra classe in Swift
- 19. MapReduce utilizzando SQL Server come origine dati
- 20. delegazione e Dati di origine iOS
- 21. Modifica origine dati XML di Crystal Report
- 22. Xcode 7 storyboard delegate origini dati origine
- 23. Elenco come origine dati per DataList
- 24. Posso configurare Grails senza origine dati?
- 25. DataTable - Colonne dinamiche da origine dati Ajax?
- 26. Problemi Impostazione RDLC Origine dati di opporsi
- 27. JBoss 7 AS origine dati per SQLServer
- 28. Avvio a molla con origine dati JNDI
- 29. applicazione spring-boot senza origine dati
- 30. EJB injection in servlet failed
Sì è necessario chiudere la connessione che rilascerà la connessione torna alla piscina. – dinukadev
Perché si desidera utilizzare getConnection e non iniettare direttamente PersistenceContext? – perissf