私はSpringとHibernateを使用して、2つのデータソース構成を使用して複数のデータベースサーバーの保存、更新を同時に行っています。私は使っている
org.springframework.jdbc.datasource.DriverManagerDataSource
データソースを作成するためのクラス。データベース サーバーの両方が稼働中であれば、正常に動作しています。データベース サーバーの 1 つを閉じて例外をキャッチしようとすると、catch ブロックに入らず、Web ブラウザーにスタック トレース エラーが表示されます。
Stack Trace:
** ネストされた例外の開始 **
java.net.ConnectException
メッセージ: 接続が拒否されました: 接続
スタックトレース:
java.net.ConnectException: 接続が拒否されました: 接続
java.net.PlainSocketImpl.socketConnect(ネイティブメソッド)で
java.net.PlainSocketImpl.doConnect (PlainSocketImpl.java:333) で
java.net.PlainSocketImpl.connectToAddress (PlainSocketImpl.java:195) で
java.net.PlainSocketImpl.connect (PlainSocketImpl.java:182) で
java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)で
java.net.Socket.connect(Socket.java:525) で
java.net.Socket.connect(Socket.java:475) で
java.net.Socket で (Socket.java:372)
java.net.Socket で (Socket.java:215)
com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256) で
com.mysql.jdbc.MysqlIO で。(MysqlIO.java:271)
com.mysql.jdbc.Connection.createNewIO(Connection.java:2771) で
com.mysql.jdbc.Connection.(Connection.java:1555) で
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) で
java.sql.DriverManager.getConnection(DriverManager.java:582) で
java.sql.DriverManager.getConnection(DriverManager.java:154) で
org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:173) で
org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:164) で
org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149) で
org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119) で
org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:82) で
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) で
org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) で
org.hibernate.jdbc.AbstractBatcher.prepareStatement (AbstractBatcher.java:116) で
org.hibernate.id.insert.AbstractSelectingDelegate.performInsert (AbstractSelectingDelegate.java:54) で
org.hibernate.persister.entity.AbstractEntityPersister.insert (AbstractEntityPersister.java:2186) で
org.hibernate.persister.entity.AbstractEntityPersister.insert (AbstractEntityPersister.java:2666) で
org.hibernate.action.EntityIdentityInsertAction.execute (EntityIdentityInsertAction.java:71) で
org.hibernate.engine.ActionQueue.execute (ActionQueue.java:279) で
org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate (AbstractSaveEventListener.java:321) で
org.hibernate.event.def.AbstractSaveEventListener.performSave (AbstractSaveEventListener.java:204) で
org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId (AbstractSaveEventListener.java:130) で
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) で
org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId (DefaultSaveEventListener.java:56) で
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient (DefaultSaveOrUpdateEventListener.java:195) で
org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50) で
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93) で
org.hibernate.impl.SessionImpl.fireSave (SessionImpl.java:562) で
org.hibernate.impl.SessionImpl.save (SessionImpl.java:550) で
org.hibernate.impl.SessionImpl.save (SessionImpl.java:546) で
org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:686) で
org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:1) で
org.springframework.orm.hibernate3.HibernateTemplate.doExecute (HibernateTemplate.java:406) で
org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374) で
org.springframework.orm.hibernate3.HibernateTemplate.save (HibernateTemplate.java:683) で
com.service.RegistrationServiceImpl.add(RegistrationServiceImpl.java:56) で
com.controller.RegistrationController.onSubmit (RegistrationController.java:48) で
org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:272) で
org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:268) で
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) で
org.springframework.web.servlet.mvc.SimpleControllerHandlerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) で
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:763) で
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:709) で
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:613) で
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:536) で
javax.servlet.http.HttpServlet.service(HttpServlet.java:647) で
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) で
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:269) で
org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:188) で
org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:213) で
org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:172) で
org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:127) で
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) で
org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:108) で
org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:174) で
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879) で
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) で
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket (PoolTcpEndpoint.java:528) で
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt (LeaderFollowerWorkerThread.java:81) で
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) で
java.lang.Thread.run(Thread.java:619) で
** ネストされた例外の終了 *
この例外を処理するにはどうすればよいですか。db サーバーの 1 つがダウンしていることを GUI に表示したい db サーバーのいずれかがダウンしている場合。
これについて助けてください。