2016-05-05 10 views
1

JavaFXのデスクトップアプリケーション用のConection Pool Whit vibur-dbcpを作成しようとしています。AWSでMySQLデータベースを取得しています。私がアプリケーションから接続時間を増やすと、私は自分のコードをチェックします。その理由は、アプリケーションが多くの接続を作成して過熱状態になるためです(アプリケーションに埋め込みSQLiteデータベースがあり、接続に問題はありませんでした)私は自分のコードの構造を作り直していますが、まだたくさんの接合部を作る必要があります。Java + MySQL + Vibur-dbcpで接続プールを作成することができません

解決方法を探していますが、私は解決策の数が多いことがわかります。Apache Commons、C3P0、HikariCP、Vibur DBCP私はすべてを使用しようとしていますが、私はチュートリアルを探しますが、私はサーブレットとスニペットのみの古い実装(Java 6以前)を見つけることができ、すべて私にとって非常に混乱しています(私のお気に入りのオプションはHikariCPですが、私はプールを作ることができます私の次の選択肢はViburです。私はこのコードをconectionに持っています。

private Connection connection; 

//creates the pool 
public DataSource createDataSourceWithStatementsCache() { 
ViburDBCPDataSource ds = new ViburDBCPDataSource(); 

ds.setJdbcUrl("dbURL"); 
ds.setUsername("dbUser"); 
ds.setPassword("dbPass"); 

ds.setPoolInitialSize(10); 
ds.setPoolMaxSize(100); 

ds.setConnectionIdleLimitInSeconds(30); 
ds.setTestConnectionQuery("isValid"); 

ds.setLogQueryExecutionLongerThanMs(500); 
ds.setLogStackTraceForLongQueryExecution(true); 

ds.setStatementCacheMaxSize(200); 

ds.start(); 
return ds; 
} 

//Getts the conection 
public Connection conectarBD(){ 
    try { 
     connection = createDataSourceWithStatementsCache().getConnection(); 
    } catch (SQLException ex) { 
     Logger.getLogger(coneccionBD.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    return connection; 
} 


public void desconectarBD(){ 
    try { 
     connection.close(); 
    } catch (SQLException ex) { 
     Logger.getLogger(coneccionBD.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

私が尋ねるが、私はこのコードで間違って作るものを二つ

1.-何であるかイム

Exception in thread "JavaFX Application Thread" java.lang.NoClassDefFoundError: org/vibur/objectpool/listener/Listener 
    at HE.MVC.Modelo.Laboratoriales.Conexion.createDataSourceWithStatementsCache(Conexion.java:36) 
    at HE.MVC.Modelo.Laboratoriales.Conexion.conectarBD(Conexion.java:63) 
    at HE.MVC.Modelo.MedicamentosAbituales.cargaTabla(MedicamentosAbituales.java:186) 
    at HE.MVC.Vistas.Paciente.NuevopacienteController.iniciaTablas(NuevopacienteController.java:351) 
    at HE.MVC.Vistas.Paciente.NuevopacienteController.initialize(NuevopacienteController.java:1156) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409) 
    at HE.HEstadistica.LanzaNuevoPaciente(HEstadistica.java:304) 
    at HE.MVC.Vistas.Paciente.EscenaPacientesController$7$1.run(EscenaPacientesController.java:347) 
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) 
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.ClassNotFoundException: org.vibur.objectpool.listener.Listener 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 17 more 

このエラーを取得します?。

私はこの仕事をする方法を学ぶことができますどこに、conecctionプール(初心者のためのひかりの説明は素晴らしいだろう)のための本、マニュアル、ページoのビデオはありますか?

+2

'org.vibur.objectpool.listener.Listener'の' ClassNotFoundException'はクラスパス上に見つかりませんでした。私の推測では、それは 'ViburDBCPDataSource'から参照されています。 zeroturnaroundで[この記事](http://zeroturnaround.com/rebellabs/rebel-labs-tutorial-do-you-really-get-classloaders/4/)を見てください。 – hotzst

答えて

1

@CorrOrtiz、あなたの最初の質問に関して、@hotzstがあなたの質問の下の彼のコメントの中で示唆していることは正しいです。 Vibur DBCPには、アプリケーションの依存関係として必要な2つのjarファイル(vibur-dbcp-9.0.jarおよびvibur-object-pool-9.0.jar)があります。あなたが取得している例外は、おそらく2番目の依存関係が失われている可能性があることを意味します。ただし、Maven経由でvibur-dbcp依存関係を追加した場合は、推移的に2番目の依存関係もあるはずです。

関連する問題