spring-mvc - 在Spring MVC应用程序中的服务器启动期间捕获错误

标签 spring-mvc error-handling

我正在使用Spring MVC应用程序,该应用程序尝试在服务器启动期间通过连接到数据库来初始化某些对象。

每当服务器启动过程中由于以下任一情况引起问题时,我都会通过写入日志文件(由应用程序支持团队监视)来提醒我的应用程序支持团队。

  • 服务器无法自动连接applicationContext中指定的任何Bean。
  • 数据库已关闭,无法连接。

  • 我想知道如何以与应用程序服务器/数据库服务器/驱动程序无关的方式来捕获上面列出的方案中的错误。我们在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-您可以通过实现

  • 对需要报告的错误进行分类。
  • 实现Log4j 2-这提供了许多选项来有效控制日志

  • 例如,您可以根据匹配的过滤条件在特定文件中放置特定错误。这样,您可以通过简单的记录器配置将异常“Re​​porting”依赖性与代码分离。

    我很确定您的第一个错误不会在主要区域发生,否则将导致部署失败;)

    关于spring-mvc - 在Spring MVC应用程序中的服务器启动期间捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14964663/

    相关文章:

    java - Spring MVC 和 thymeleaf ModelAttribute 为 null 或未评估

    excel - 如何在 VBA 中 VLOOKUP 获取#N/A 值?

    swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

    c# - 正确处理文件流和二进制流以及处理文件流

    java - Spring:为@ModelAttribute创建元注释

    java - HTML - 有条件地选中复选框

    java - 如何在 Spring boot 下运行的 REST Controller 中获取与 HTTPS 请求相关的 SSL 证书(X.509)?

    java - Spring /json : Convert a typed collection like List<MyPojo>

    error-handling - 如何正确使用 Option::ok_or() 方法?

    python - 希望尝试缩进