Thx for reply,

Do You think it would be hard to implement it in Tomcat ?
It seems to be quite a useful feature.

Regards
Jakub



On Tue, Jan 14, 2014 at 3:26 PM, Daniel Mikusa <dmik...@gopivotal.com>wrote:

> On Jan 13, 2014, at 7:48 PM, Ja kub <jjaku...@gmail.com> wrote:
>
> > I modified conf/context.xml <Context unloadDelay="60000">
> > I hoped tomcat would wait 60 seconds for request to end.
>
> No, it doesn't do this.  It does not have an option for "graceful" restart
> / shutdown like Apache HTTPD.  If you want that behavior, you could setup a
> proxy in front of Tomcat and use that to either temporarily handle the
> requests (like send them to a maintenance page) or direct them to a
> different Tomcat node (like with a cluster setup).  In this way you can
> slowly drain the requests from your Tomcat server and then safely restart /
> shut it down.
>
> > But there are some problems with spring app, I get
> >
> > HTTP Status 503 - Servlet jsp is currently unavailable:
> >
> > I use tomcat 7.42 64 bit on windows 7
> >
> > steps to reproduce:
>
> As mentioned above, Tomcat doesn't really have a graceful shutdown option,
> at least not like HTTPD has graceful restart / shutdown options.
>
> Tomcat has two shutdown options.  The first is a controlled shutdown (kill
> -15 or the shutdown port) and this nicely gives applications deployed to
> Tomcat the chance to clean up.  This is normally what happens when you use
> the shutdown script.  The second is a kill -9, which just ends the process
> immediately.
>
> Dan
>
> >
> > use app from https://github.com/spring-projects/spring-petclinic
> >
> > git clone https://github.com/SpringSource/spring-petclinic.git
> >
> > to VetController class add:
> >
> >    @RequestMapping("/vets/{delay}")
> >    public String showVetListDelayed(@PathVariable int delay, Map<String,
> > Object> model) {
> >        // Here we are returning an object of type 'Vets' rather than a
> > collection of Vet objects
> >        // so it is simpler for Object-Xml mapping
> >        Vets vets = new Vets();
> >        vets.getVetList().addAll(this.clinicService.findVets());
> >        model.put("vets", vets);
> >        try {
> > Thread.sleep(1000*delay);
> > } catch (InterruptedException e) {
> > // TODO Auto-generated catch block
> > e.printStackTrace();
> > } catch (Exception e) {
> > e.printStackTrace();
> > }
> >        System.err.println("woken up ---------------------------");
> >        return "vets/vetList";
> >    }
> > mvn clean install
> >
> > // copy from target to webapps
> >
> > go to
> > http://localhost:8080/petclinic/vets/5
> > hit ctrl C
> >
> > app sleeps,  wait until
> > System.err.println("woken up ---------------------------"); executes !!!!
> > but browser gets error.
> >
> > below is console log:
> >
> > Hibernate: select distinct vet0_.id as id1_5_0_, specialty2_.id as
> > id1_2_1_, vet0_.first_
> > specialty2_.name as name2_2_1_, specialtie1_.vet_id as vet1_5_0__,
> > specialtie1_.specialt
> > join vet_specialties specialtie1_ on vet0_.id=specialtie1_.vet_id left
> > outer join special
> > alty2_.id order by vet0_.last_name, vet0_.first_name
> > Jan 14, 2014 1:20:15 AM org.apache.catalina.core.StandardServer await
> > INFO: A valid shutdown command was received via the shutdown port.
> Stopping
> > the Server in
> > Jan 14, 2014 1:20:15 AM org.apache.coyote.AbstractProtocol pause
> > INFO: Pausing ProtocolHandler ["http-apr-8080"]
> > Jan 14, 2014 1:20:15 AM org.apache.coyote.AbstractProtocol pause
> > INFO: Pausing ProtocolHandler ["ajp-apr-8009"]
> > Jan 14, 2014 1:20:15 AM org.apache.catalina.core.StandardService
> > stopInternal
> > INFO: Stopping service Catalina
> > Jan 14, 2014 1:20:16 AM org.apache.catalina.core.StandardWrapper unload
> > INFO: Waiting for 1 instance(s) to be deallocated for Servlet [petclinic]
> > woken up ---------------------------
> > INFO  XmlWebApplicationContext - Closing WebApplicationContext for
> > namespace 'petclinic-s
> > ]; parent: Root WebApplicationContext
> > INFO  XmlWebApplicationContext - Closing Root WebApplicationContext:
> > startup date [Tue Ja
> > INFO  AnnotationMBeanExporter - Unregistering JMX-exposed beans on
> shutdown
> > INFO  EhCacheManagerFactoryBean - Shutting down EhCache CacheManager
> > INFO  LocalContainerEntityManagerFactoryBean - Closing JPA
> > EntityManagerFactory for persi
> > Jan 14, 2014 1:20:22 AM org.apache.catalina.loader.WebappClassLoader
> > clearReferencesJdbc
> > SEVERE: The web application [/petclinic] registered the JDBC driver
> > [org.hsqldb.jdbc.JDBC
> > plication was stopped. To prevent a memory leak, the JDBC Driver has been
> > forcibly unregi
> > Jan 14, 2014 1:20:22 AM org.apache.catalina.loader.WebappClassLoader
> > clearReferencesThrea
> > SEVERE: The web application [/petclinic] appears to have started a thread
> > named [PoolClea
> > p it. This is very likely to create a memory leak.
> > Jan 14, 2014 1:20:22 AM org.apache.coyote.AbstractProtocol stop
> > INFO: Stopping ProtocolHandler ["http-apr-8080"]
> > Jan 14, 2014 1:20:22 AM org.apache.coyote.AbstractProtocol stop
> > INFO: Stopping ProtocolHandler ["ajp-apr-8009"]
> > Jan 14, 2014 1:20:22 AM org.apache.coyote.AbstractProtocol destroy
> > INFO: Destroying ProtocolHandler ["http-apr-8080"]
> > Jan 14, 2014 1:20:22 AM org.apache.coyote.AbstractProtocol destroy
> > INFO: Destroying ProtocolHandler ["ajp-apr-8009"]
> >
> >
> > Regards
> > Jakub
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

Reply via email to