thanks for looking into it .. now we wait for the folks at mortbay

On 10/23/06, Jerome Louvel <[EMAIL PROTECTED]> wrote:

I've just sent the email to Jetty list:
http://article.gmane.org/gmane.comp.java.jetty.general/8218

BTW, I've tested the code snippet with Jetty 5, Simple and AsyncWeb and they
all appear to properly stop/restart the container and connector. So, this is
definitely a Jetty 6 issue.

Thanks,
Jerome

> -----Message d'origine-----
> De : Jerome Louvel
> Envoyé : lundi 23 octobre 2006 13:54
> À : discuss@restlet.tigris.org
> Objet : RE: starting, stopping and starting a container
> throws an exception
>
>
> Hi again,
>
> Thanks an interesting issue :-) After investigation, the
> Container does close the connectors as intended. This is
> actually done by the Component super class. In the Jetty 6
> case, it does invoke the stop() method on the Jetty server,
> which apparently invokes the close() / stop() methods on the
> internal connectors...
>
> That was weird to see that. Looking at the JDK's docs on
> ServerSocket, I've realized that a call to
> "setReuseAddress(true)" must be done before binding if you
> want to reuse the socket. Jetty 6 doesn't seem to set this
> property so I guess that the core of the problem.
>
> I'll send an email to Jetty's list for confirmation. Any
> other thoughts?
>
> Best regards,
> Jerome
>
> > -----Message d'origine-----
> > De : Piyush Purang [mailto:[EMAIL PROTECTED]
> > Envoyé : dimanche 22 octobre 2006 14:54
> > À : discuss@restlet.tigris.org
> > Objet : starting, stopping and starting a container throws an
> > exception
> >
> > Hi,
> >
> > stopping a running container and then starting it again throws the
> > following exception
> >
> > 2006-10-21 23:55:11.968::INFO:  Logging to STDERR via
> > org.mortbay.log.StdErrLog
> > 2006-10-21 23:55:12.007::INFO:  jetty-6.0.x
> > 2006-10-21 23:55:12.041::INFO:  Started
> > SelectChannelConnector @ 127.0.0.1:8184
> > Stopping container!
> > Starting the container again!
> > 2006-10-21 23:55:22.059::INFO:  jetty-6.0.x
> > 2006-10-21 23:55:22.060::INFO:  Started
> > SelectChannelConnector @ 127.0.0.1:8184
> > 2006-10-21 23:55:22.061::WARN:  failed SelectChannelConnector
> > @ 127.0.0.1:8184
> > 2006-10-21 23:55:22.061::WARN:  failed
> > [EMAIL PROTECTED]
> > Exception in thread "main" java.net.BindException: Address
> > already in use
> >         at sun.nio.ch.Net.bind(Native Method)
> >         at
> > sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImp
> > l.java:119)
> >         at
> > sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
> >         at
> > org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChanne
> > lConnector.java:152)
> >         at
> > org.mortbay.jetty.AbstractConnector.doStart(AbstractConnector.
> > java:313)
> >         at
> > org.mortbay.jetty.nio.SelectChannelConnector.doStart(SelectCha
> > nnelConnector.java:124)
> >         at
> > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycl
> > e.java:38)
> >         at org.mortbay.jetty.Server.doStart(Server.java:217)
> >         at
> > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycl
> > e.java:38)
> >         at
> > com.noelios.restlet.ext.jetty.JettyServerHelper.start(JettySer
> > verHelper.java:152)
> >         at
> > com.noelios.restlet.ext.jetty.HttpServerHelper.start(HttpServe
> > rHelper.java:90)
> >         at org.restlet.Server.start(Server.java:265)
> >         at org.restlet.Component.start(Component.java:100)
> >         at org.restlet.Container.start(Container.java:162)
> >         at com.piy.restlet.Playground.main(Playground.java:71)
> >
> >
> >
> > If i look at the stacktrace I think the problem lies in the
> fact that
> > container.stop() doesn't stop the server (Doesn't propogate
> the call
> > to Server(s)) and the next call to start() tries to start the
> > (new?)server.
> >
> > Now is that a bug or does the contract of the container say
> that once
> > you have started a container stop doesn't stop the servers or that
> > there is latency to be expected or that starting after a stop isn't
> > expected?
> >
> > Cheers
> > Piyush
> >
> > --------------------------------------------------------------
> > -----------------------------
> > Code snippet to reproduce the problem
> >
> >
> >         Container container = new Container();
> >         ServerList servers = container.getServers();
> >
> >         Protocol httpProtocol = Protocol.HTTP;
> >         String ipAddress = "127.0.0.1";
> >         int httpPort = 8184;
> >
> >         servers.add(httpProtocol, ipAddress, httpPort);
> >
> >
> >         VirtualHost host =
> > VirtualHost.createLocalHost(container.getContext());
> >         host.attach("/something", new Restlet() {
> >             protected void handleGet(Request request,
> > Response response) {
> >
> > response.setEntity("ManagedDelegatedRestletContainerFlavTwo
> > says Hello
> > World!", MediaType.TEXT_PLAIN);
> >             }
> >         });
> >         container.setDefaultHost(host);
> >         container.start();
> >
> >         try {
> >             Thread.sleep(5000);
> >         } catch (InterruptedException ex) {
> >             Thread.currentThread().interrupt();
> >         }
> >         System.out.println("Stopping container!");
> >         container.stop();
> >
> >
> >         try {
> >             Thread.sleep(5000);
> >         } catch (InterruptedException ex) {
> >             Thread.currentThread().interrupt();
> >         }
> >         System.out.println("Starting the container again!");
> >
> >         container.start();
> >
> >

Reply via email to