Einrichten der Tomcat-JDBC connection pool mit dem Spring JDBCTemplate

Ich versuche die Einrichtung eines Tomcat-connection pool (MySQL) in meinem Java-web-app, während mit dem Spring JDBCTemplate.

Dies ist die Java-Klasse zum erstellen der connection pool:

@Configuration
public class DataAccessConfiguration {

    @Bean(destroyMethod = "close")
    public javax.sql.DataSource datasource() {
        org.apache.tomcat.jdbc.pool.DataSource ds = new org.apache.tomcat.jdbc.pool.DataSource();
        ds.setDriverClassName("org.h2.Driver");
        ds.setUrl("jdbc:h2:java-config");
        ds.setUsername("sa");
        ds.setPassword("");
        ds.setInitialSize(5);
        ds.setMaxActive(10);
        ds.setMaxIdle(5);
        ds.setMinIdle(2);
        return ds;
    }

    @Bean public JdbcOperations tpl() {
        return new JdbcTemplate(datasource());
    }

}

Dies ist, wie bekomme ich die ApplicationContext (in der main-Methode zum Beispiel):

   public static void main(String[] args) {
      ApplicationContext context = 
             new ClassPathXmlApplicationContext("Beans.xml");

Wie soll ich das definieren der DataAccessConfiguration Klasse in der Beans.xml - Datei, damit der Frühling weiß es zu benutzen?

**

Update:

**

Dies ist die eigentliche Konfigurations-Methode:

public javax.sql.DataSource datasource() {
        org.apache.tomcat.jdbc.pool.DataSource ds = new org.apache.tomcat.jdbc.pool.DataSource();
        PoolProperties p = new PoolProperties();
        p.setUrl("jdbc:mysql://localhost:3306/mysql");
        p.setDriverClassName("com.mysql.jdbc.Driver");
        p.setUsername("root");
        p.setPassword("");
        p.setJmxEnabled(true);
        p.setTestWhileIdle(false);
        p.setTestOnBorrow(true);
        p.setValidationQuery("SELECT 1");
        p.setTestOnReturn(false);
        p.setValidationInterval(30000);
        p.setTimeBetweenEvictionRunsMillis(30000);
        p.setMaxActive(100);
        p.setInitialSize(10);
        p.setMaxWait(10000);
        p.setRemoveAbandonedTimeout(60);
        p.setMinEvictableIdleTimeMillis(30000);
        p.setMinIdle(10);
        p.setLogAbandoned(true);
        p.setRemoveAbandoned(true);
        p.setJdbcInterceptors(
                "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;"+
                "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer");
        ds.setPoolProperties(p);
        return ds;
    }

Können Sie bitte helfen schreiben Sie die Beans.xml?

  • Der name standardmäßig wäre dataSource.
  • sollte ich eine Klasse, wie gut? Wenn ja, welche Klasse soll es werden? DataAccessConfiguration?
  • Was ist in Ihrem Beans.xml wenn es component-scanning-stellen Sie sicher, dass die @Configuration Klasse abgeholt wird, sonst fügen Sie es einfach als eine bean zu Ihrer xml-Datei.
  • dies ist meine Frage - wie sollte ich es in meine xml-Datei? was ist das format?
  • Genau wie jede andere Bohne... Warum sollte es auch anders sein.
  • Verwenden Sie die neuen AnnotationConfigApplicationContext(DataAccessConfiguration.class) anstelle von ClassPathXmlApplicationContext("Beans.xml") in der main-Methode.
  • das class-Attribut dieses bean sollte der name der Klasse in mein Projekt? da die gesamte Konfiguration ist in der Klasse selbst, richtig?
  • Oder wenn Sie wirklich, wirklich wollen/ benötigen, um die neuen ClassPathXmlApplicationContext("Beans.xml") dann setzen <bean-Klasse="..DataAccessConfiguration"/> in Ihre Beans.xml. Dies ist jedoch nutzlos, wenn Sie keinen anderen XML-basierenden beans.
  • Ich habe auch andere XML-basierte Bohnen, so ist es nicht nutzlos. Vielen Dank für deine Antwort 🙂
  • Ich persönlich würde versuchen, nicht zu mischen unterschiedlicher Konfiguration-Stile, ist dies meist möglich und nicht schwierig. Aber wenn Sie wollen/haben, dann einfach bei der Registrierung die Konfiguration als bean soll es tun.
  • Sie könnten auch erwägen (je nach Bestellung) docs.Frühling.io/spring-framework/docs/current/javadoc-api/org/... mit dem neuen AnnotationConfigApplicationContext(DataAccessConfiguration.class) als parent-parameter.
  • wenn ich diese, wie würde ich laden, der rest von den Bohnen? Ich habe eine Menge von DAO-Klassen implementiert, die ich brauche, um zu verwenden
  • Mit der Anwendung Kontext-Konstruktor mit dem parameter parent/s ermöglicht die Kombination von mehreren anwendungskontexten zusammen, so wie <import resource="..."> gilt für XML-basierte Konfiguration oder die @Import-annotation-basierte Konfiguration. In deinem Fall hättest du wahrscheinlich parent = new AnnotationConfigApplicationContext(DataAccessConfiguration.class) und dann Datei ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml", parent); , wo in Beans.xml Sie würden Ihr DAO-Bohnen-Definitionen. Sorry, ich Verband die ein-parameter-Konstruktor in meinem vorherigen Kommentar.
  • Ich persönlich würde jedoch Anschluss diskutiert die @ - Konfiguration in XML, um dann eine Konfiguration-Stil, mit zwei Bohnen ist es nicht viel Aufwand.
  • Sorry, ein Hinweis darauf, dass - für die web-Anwendung könnte der Ansatz Konstruktor mit übergeordneten Kontext geschehen zu sein nicht sehr gut geeignet, zumindest, wenn Sie Booten möchten den Kontext der vorhandenen spring ContextLoaderListener. Ich glaube nicht, dass Konstruktoren mit Parametern verwendet werden könnten es.
  • Ich habe die aktuelle Konfiguration in meiner app. Können Sie bitte zeigen, wie schreiben Sie die Beans.xml Datei

InformationsquelleAutor David Tzoor | 2014-12-22
Schreibe einen Kommentar