我正在使用Spring MVC应用程序,该应用程序尝试在服务器启动期间通过连接到数据库来初始化某些对象。
每当服务器启动过程中由于以下任一情况引起问题时,我都会通过写入日志文件(由应用程序支持团队监视)来提醒我的应用程序支持团队。
我想知道如何以与应用程序服务器/数据库服务器/驱动程序无关的方式来捕获上面列出的方案中的错误。我们在dev(jboss)与生产(web sphere)之间使用不同的服务器,并且是否有一种以与数据库服务器/驱动程序无关的方式记录sqlexception的方法?
我希望在试图连接数据库的数据加载器类中捕获sqlException,但我不想将所有sqlException作为ALERTS记录到应用程序支持团队。另外,如果我必须检查特定的sqlErrorCode,这是否特定于应用程序使用的数据库驱动程序?明天,当我有另一个要加载不同数据的类时,我必须再次重复此过程。相反,只要服务器不启动或不连接数据库,是否有一种更简单的方法可在整个应用程序中执行此操作。
是否可以使用方面来捕获这些错误(服务器启动和数据库连接问题)?
我所指的异常(exception)情况是
自动接线失败时的
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
最佳答案
@aprajitha-您可以通过实现
例如,您可以根据匹配的过滤条件在特定文件中放置特定错误。这样,您可以通过简单的记录器配置将异常“Reporting”依赖性与代码分离。
我很确定您的第一个错误不会在主要区域发生,否则将导致部署失败;)
关于spring-mvc - 在Spring MVC应用程序中的服务器启动期间捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14964663/