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