title: SpringBatch datasource configuration - exception handling
body: <p>I have a SpringBatch project where I want to catch an <strong>exception thrown when the application cannot find the datasource</strong>. I've already by-passed this, so it will use 'in memory DAO objects' instead of tables.. but it still throws an exception when datasource is not found. <br/>
  <strong>I want to catch that exception and throw my own error code</strong>, but I have no idea where the try/catch block must be placed.</p>
  
  <p>Here is a piece of the error log:</p>
  
  <pre><code>2016-11-24 09:25:36.171  INFO 36770 --- [main] c.d.d.e.config.ReaderConfiguration : Configuring FlatFileItemReader for [MAP]
  2016-11-24 09:25:51.664 ERROR 36770 --- [main] o.a.tomcat.jdbc.pool.ConnectionPool : Unable to create initial connections of pool.
  
  com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host [***], port 1433 has failed. Error: "null. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
      at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190) ~[sqljdbc4.jar:na]
  </code></pre>
  
  <p>This is overridden to bypass table creation. Also, I use two datasources and this class needed to be here anyway.</p>
  
  <pre><code>@Component
  public class MyBatchConfigurer extends DefaultBatchConfigurer {
      //Spring batch needs this in order to allow to use more than one datasource
  
      @Override
      public JobRepository createJobRepository() throws Exception {
          return new MapJobRepositoryFactoryBean().getObject();
      }
  }
  </code></pre>
  
  <p>To be noted that I even tried to place try/catch on "the main" method.. and it still throws the exception above.. and then gets to the breakpoint inside catch.
  Also, I tried creating the datasource manually.. but to no avail. Even more, ApplicationEvent doesn't seem to work either.</p>
  
  <p>This is a log where datasource is found:</p>
  
  <pre><code>2016-10-25 16:05:13 [main] INFO  c.d.d.e.config.CompanyConfiguration - Configure FlatFileItemReader for [IW]
  2016-10-25 16:05:13 [main] INFO  o.s.jdbc.datasource.init.ScriptUtils - Executing SQL script from class path resource [org/springframework/batch/core/schema-sqlserver.sql]
  2016-10-25 16:05:13 [main] INFO  o.s.jdbc.datasource.init.ScriptUtils - Executed SQL script from class path resource [org/springframework/batch/core/schema-sqlserver.sql] in 49 ms.
  2016-10-25 16:05:13 [main] INFO  o.s.b.f.config.PropertiesFactoryBean - Loading properties file from URL [jar:file:/home/etl/d-d/d-e-1.0.4-SNAPSHOT.jar!/lib/spring-integration-core-4.2.5.RELEASE.jar!/META-INF/spring.integration.default.properties]
  </code></pre>