2017-08-08 6 views
0

Ich baue eine Webanwendung mit ActiveJdbc. Alles funktioniert perfekt. Ich bin nur ein "Problem" mit meiner Architektur.ActiveJdbc öffnen/schließen Db-Architektur

Mit Spring 4 habe ich einen Filter, wo ich die Verbindung öffne, was ich tun muss und dann schließe.

 try { 

      Base.open(ConnectionPool.getInstance().getConnection(dbName)); 
      Base.openTransaction(); 
      chain.doFilter(req, resp); 
      Base.commitTransaction(); 
     } catch (IOException | ServletException e) { 
      Base.rollbackTransaction(); 
      Logger.logMsg(Logger.ERROR, e.getMessage()); 
      throw e; 
     } finally { 
      Base.close(); 
     } 

Das Problem ist, ich habe: - einige Controller, die eine Verbindung nicht benötigen. - Ein Scheduler, der eine Verbindung zur Instanziierung eines Singleton benötigt. - Einige andere Klassen, die möglicherweise eine Verbindung gemäß einigen Parametern benötigen.

Das Ergebnis ist, ich habe diesen Code oben an mehreren Stellen. Gibt es einen besseren Weg, die Verbindung nur an einem Ort zu machen?

Antwort

1

JavaLite hat eine beträchtliche Flexibilität beim Öffnen/Schließen-Verbindungen für verschiedene Controller: http://javalite.io/database_configuration#bind-connections-to-controllers

Aber da man nicht mit ActiveWeb ist, haben Sie Ihre eigene Logik zu schreiben. Grundsätzlich müssen Sie in Ihrem ServletFilter den URI untersuchen und dann eine Entscheidung treffen, eine Verbindung zu öffnen oder zu überspringen.

+0

ok, danke! Ich werde ActiveWeb für mein nächstes Projekt in Betracht ziehen. – Rony

Verwandte Themen