0 Replies Latest reply on Feb 26, 2009 12:03 PM by tomnicholls

    @Resource Injection fails in servlet the second time

    tomnicholls

      I am trying to inject a JDBC DataSource into a servlet running on JBoss 5.0.0.GA

      The DataSource injection appears to work the first time the servlet is called (after deployment) and I get a Connection successfully.

      However, when the servlet is called the second time, I get an error:


      16:53:59,687 ERROR [STDERR] org.jboss.util.NestedSQLException: You are trying to use a connection factory that has been shut down: ManagedConnectionFactory is null.; - nested throwable: (javax.resource.ResourceException: You are trying to use a connection factory that has been shut down: ManagedConnectionFactory is null.)
      16:53:59,687 ERROR [STDERR] at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:95)



      This is a test project for training purposes. I am using a mysql datasource thus:

       <local-tx-datasource>
       <jndi-name>bank</jndi-name>
       <use-java-context>false</use-java-context>
       <connection-url>jdbc:mysql://localhost:3306/bank</connection-url>
       <driver-class>com.mysql.jdbc.Driver</driver-class>
       <user-name>training</user-name>
       <password>codeclass</password>
       </local-tx-datasource>
      


      and injecting into the servlet as follows:

      @Resource(mappedName="bank")
      private DataSource dataSource;
      


      Either the datasource is timing out or I have misunderstood the lifecycle of dependency injection into servlets somehow.

      A straight lookup of the datasource works, incidentally, on each servlet call:

      Context ctxt = new InitialContext();
      dataSource = (DataSource)(ctxt).lookup("bank");
      


      Clearly I've missed something important here. I've had similar issues injecting EJBs into servlets with JBoss 5 (i.e. works first time then fails subsequently) but I realise there are issues with this in any case.

      Any help gratefully appreciated.

      - Tom