Daniel,
You might take a look at java’s “ try with” construct

--------------------------------------------------------------------------------------------------------------
Here is a fragment of the code from the file HolidaysRESTJSONResource.jar.
--------------------------------------------------------------------------
public class HolidaysRESTJSONResource {

   DataSource dataSource;

   public HolidaysRESTJSONResource() {
       dataSource = DataSourceSingleton.getInstance().dataSource;
   }

   @GET
   @Path("/countries")
   @Produces(MediaType.APPLICATION_JSON)
   public String getJsonCountries() {
   ...
       Connection connection;
       try {
           connection = dataSource.getConnection();
           TempDataStorage.countryList = GetCountryList.doIt(connection);
           connection.close();
   ...
}
--------------------------------------------------------------------------

The constructor for HolidaysRESTJSONResource creates a DataSource by creating an instance of the following DataSourceSingleton class and retrieving the value of the DataSource instance variable.  I borrowed this code from somewhere.  It seems to work.  The MySql database is called "holidays".

--------------------------------------------------------------------------
public class DataSourceSingleton {

   private static DataSourceSingleton instance = null;
   public DataSource dataSource = null;

   private DataSourceSingleton() {
       try {
           InitialContext ctx = new InitialContext();
           dataSource = (DataSource) ctx.lookup("jdbc/holidays");
       } catch (NamingException e) {
           System.out.println(e);
       }
   }

   public static DataSourceSingleton getInstance() {
       if (instance == null) {
           instance = new DataSourceSingleton();
       }
       return instance;
   }
}
--------------------------------------------------------------------------

Back in HolidaysRESTJSONResource, in the method getJsonCountries(), the DataSource object, called "dataSource", is used to create the connection object, and this is used in a method call GetCountryList.doIt() to retrieve a list of countries from the database.  Then this connection object is closed.  I think that this is all that is needed to prevent memory leaks.  Is this correct?  I do this for every such method call that accesses the database.   
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to