Perhaps you should read this as well:
http://www.mail-archive.com/users@tapestry.apache.org/msg41237.html.
But overall, not necessarily a good idea to shut down services before
their time. For your specific case though, why not just use h2
(http://h2database.com) and DB_CLOSE_ON_EXIT=TRUE instead and be done
with the issue.

Kalle


On Mon, Nov 29, 2010 at 12:43 PM, Paul Stanton <p...@mapshed.com.au> wrote:
> Javier,
>
> I agree re registryIsShuttingDown .. that is what i'm looking for.
>
> something that is called after new httprequests have been stopped, but
> before the registry becomes broken.
>
> there would need to be some ordered configuration to control the process
> however.
>
> i'm guessing this doesn't currently exist, should i create a jira issue?
>
> in the mean time i have solved my problem by recording the connection info
> at startup so i don't need to inject a service at shutdown:
>
> public class DbShutdownImpl implements DbShutdown, RegistryShutdownListener
> {
>    private Properties hibConfig;
>
>    private final static Logger LOG = Logger.getLogger(DbShutdownImpl.class);
>
>    public DbShutdownImpl(HibernateSessionSource sessionSource)
>    {
>        hibConfig = sessionSource.getConfiguration().getProperties();
>    }
>
>   �...@postinjection
>    public void startupService(RegistryShutdownHub shutdownHub)
>    {
>        shutdownHub.addRegistryShutdownListener(this);
>    }
>
>   �...@override
>    public void registryDidShutdown()
>    {
>        Connection con = null;
>        try
>        {
>            String driver =
> hibConfig.getProperty("hibernate.connection.driver_class");
>            String url = hibConfig.getProperty("hibernate.connection.url");
>            String username =
> hibConfig.getProperty("hibernate.connection.username");
>            String password =
> hibConfig.getProperty("hibernate.connection.password");
>            con = JdbcUs.getConnection(driver, url, username, password);
>            JdbcUs.executeUpdate("SHUTDOWN", con);
>            LOG.debug("database shutdown cleanly");
>        }
>        catch (Throwable e)
>        {
>            LOG.error("database shutdown failed", e);
>        }
>        finally
>        {
>            JdbcUs.closeQuietly(con);
>        }
>    }
> }
>
> NOTE: This won't work for everyone.
>
> p.
>
> On 29/11/2010 11:16 PM, Javier Molina wrote:
>>
>> Overriding the filter might look ugly, but it was designed for that; see
>> the comments on destroy() and destroy(Registry registry).
>>
>> You might find it less ugly to have a ServletContextListener and do the
>> cleanup in contextDestroyed.
>>
>> The real solution would be to have a registryIsShuttingDown()
>> notification, fired before registryDidShutdown(). I haven't found it,
>> though.
>>
>>
>> El 29/11/10 12:53, Tom van Dijk escribió:
>>>
>>> Which service would that be? Could you provide a stack trace?
>>>
>>> Perhaps you could make your service contribute to RegistryStartup as
>>> well,
>>> to make sure the DbShutdownImpl service is realized and that the
>>> sessionSource is realized. The "startupService" would then be the
>>> registry
>>> startup method.
>>>
>>> I agree that modifying TapestryFilter is an ugly solution and should be
>>> avoided if possible.
>>>
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

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

Reply via email to