1

私は、データベースに接続することにより、サーバーの起動中に特定のオブジェクトを初期化しようとするSpringMVCアプリケーションに取り組んでいます。

以下のシナリオのいずれかが原因でサーバーの起動中に問題が発生した場合は、ログファイル(アプリケーションサポートチームによって監視されている)に書き込むことで、アプリケーションサポートチームに警告したいと思います。

  • サーバーは、applicationContextで指定されたBeanを自動配線できませんでした。
  • データベースがダウンしていて、接続できませんでした。

上記のシナリオで、アプリケーションサーバー/データベースサーバー/ドライバーに依存しない方法でエラーをトラップする方法を知りたいです。dev(jboss)と本番(web sphere)の間で異なるサーバーを使用します。また、データベースサーバー/ドライバーに依存しない方法でsqlexceptionをログに記録する方法はありますか?

データベースに接続しようとしているデータローダークラスでsqlExceptionをキャッチしたいと思っていましたが、すべてのsqlExceptionをALERTSとしてアプリケーションサポートチームに記録したくありません。また、特定のsqlErrorCodeを確認する必要がある場合、それはアプリケーションで使用されるデータベースドライバーに固有ですか?明日、別のデータをロードする別のクラスがある場合は、このプロセスをもう一度繰り返す必要があります。代わりに、サーバーが起動したりデータベースに接続したりしない場合は常に、アプリケーション全体でこれを行うためのより簡単な方法があります。

これらのエラー(サーバーの起動とデータベース接続の問題の両方)をトラップするために使用できる側面はありますか?

私が言及している例外は、ここにあります

  • 自動配線が失敗したとき(この場合、無効なデータソースによって) 22:06:51,767|FLH|||ERROR|org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:308)||Thread-3|Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataLoader': Invocation of init method failed; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.jboss.util.NestedSQLException: Unable to get managed connection for jdbc/mydatasource; - nested throwable: (javax.resource.ResourceException: Unable to get managed connection for jdbc/mydatasource)

  • データベースに接続できない場合 Caused by: java.sql.SQLException: The Network Adapter could not establish the connection at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70) at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:480) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:508) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:203) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510) at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:229) ... 146 more Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:328) at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:421) at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:630) at oracle.net.ns.NSProtocol.connect(NSProtocol.java:206) at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:966) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:292) ... 151 more Caused by: java.net.UnknownHostException: server1.somewhere.com at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:195) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432) at java.net.Socket.connect(Socket.java:529) at java.net.Socket.connect(Socket.java:478) at java.net.Socket.<init>(Socket.java:375) at java.net.Socket.<init>(Socket.java:189) at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:127) at oracle.net.nt.ConnOption.connect(ConnOption.java:126) at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:306) ... 156 more

4

1 に答える 1

0

@aprajitha - あなたはこれを達成することができます

  1. 報告が必要なエラーを分類します。
  2. Log4j 2 を実装する - これにより、ロギングを効果的に制御するための多くのオプションが提供されます

たとえば、一致するフィルター基準に基づいて特定のファイルに特定のエラーを配置できます。このようにして、単純なロガー構成を使用して、コードから例外「レポート」依存関係を分離します。

最初のエラーがメイン リージョンで発生することはないと確信しています。それ以外の場合はデプロイが失敗します ;)

于 2013-02-19T21:06:47.820 に答える