Mercurial Hosting > luan
diff src/org/eclipse/jetty/server/Server.java @ 812:700317ba03ad
remove SessionIdManager
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 08 Sep 2016 21:44:37 -0600 |
parents | 3428c60d7cfc |
children | 8e9db0bbf4f9 |
line wrap: on
line diff
--- a/src/org/eclipse/jetty/server/Server.java Thu Sep 08 18:37:55 2016 -0600 +++ b/src/org/eclipse/jetty/server/Server.java Thu Sep 08 21:44:37 2016 -0600 @@ -57,606 +57,582 @@ */ public class Server extends HandlerWrapper implements Attributes { - private static final Logger LOG = Log.getLogger(Server.class); - - private static final String __version; - static - { - if (Server.class.getPackage()!=null && - "Eclipse.org - Jetty".equals(Server.class.getPackage().getImplementationVendor()) && - Server.class.getPackage().getImplementationVersion()!=null) - __version=Server.class.getPackage().getImplementationVersion(); - else - __version=System.getProperty("jetty.version","8.y.z-SNAPSHOT"); - } + private static final Logger LOG = Log.getLogger(Server.class); - private final Container _container=new Container(); - private final AttributesMap _attributes = new AttributesMap(); - private ThreadPool _threadPool; - private Connector[] _connectors; - private SessionIdManager _sessionIdManager; - private boolean _sendServerVersion = true; //send Server: header - private boolean _sendDateHeader = false; //send Date: header - private int _graceful=0; - private boolean _stopAtShutdown; - private boolean _dumpAfterStart=false; - private boolean _dumpBeforeStop=false; - private boolean _uncheckedPrintWriter=false; + private static final String __version; + static + { + if (Server.class.getPackage()!=null && + "Eclipse.org - Jetty".equals(Server.class.getPackage().getImplementationVendor()) && + Server.class.getPackage().getImplementationVersion()!=null) + __version=Server.class.getPackage().getImplementationVersion(); + else + __version=System.getProperty("jetty.version","8.y.z-SNAPSHOT"); + } + + private final Container _container=new Container(); + private final AttributesMap _attributes = new AttributesMap(); + private ThreadPool _threadPool; + private Connector[] _connectors; + private boolean _sendServerVersion = true; //send Server: header + private boolean _sendDateHeader = false; //send Date: header + private int _graceful=0; + private boolean _stopAtShutdown; + private boolean _dumpAfterStart=false; + private boolean _dumpBeforeStop=false; + private boolean _uncheckedPrintWriter=false; - /* ------------------------------------------------------------ */ - public Server() - { - setServer(this); - } + /* ------------------------------------------------------------ */ + public Server() + { + setServer(this); + } - /* ------------------------------------------------------------ */ - /** Convenience constructor - * Creates server and a {@link SelectChannelConnector} at the passed port. - */ - public Server(int port) - { - setServer(this); + /* ------------------------------------------------------------ */ + /** Convenience constructor + * Creates server and a {@link SelectChannelConnector} at the passed port. + */ + public Server(int port) + { + setServer(this); - Connector connector=new SelectChannelConnector(); - connector.setPort(port); - setConnectors(new Connector[]{connector}); - } + Connector connector=new SelectChannelConnector(); + connector.setPort(port); + setConnectors(new Connector[]{connector}); + } - /* ------------------------------------------------------------ */ - /** Convenience constructor - * Creates server and a {@link SelectChannelConnector} at the passed address. - */ - public Server(InetSocketAddress addr) - { - setServer(this); + /* ------------------------------------------------------------ */ + /** Convenience constructor + * Creates server and a {@link SelectChannelConnector} at the passed address. + */ + public Server(InetSocketAddress addr) + { + setServer(this); - Connector connector=new SelectChannelConnector(); - connector.setHost(addr.getHostName()); - connector.setPort(addr.getPort()); - setConnectors(new Connector[]{connector}); - } + Connector connector=new SelectChannelConnector(); + connector.setHost(addr.getHostName()); + connector.setPort(addr.getPort()); + setConnectors(new Connector[]{connector}); + } - /* ------------------------------------------------------------ */ - public static String getVersion() - { - return __version; - } + /* ------------------------------------------------------------ */ + public static String getVersion() + { + return __version; + } - /* ------------------------------------------------------------ */ - /** - * @return Returns the container. - */ - public Container getContainer() - { - return _container; - } + /* ------------------------------------------------------------ */ + /** + * @return Returns the container. + */ + public Container getContainer() + { + return _container; + } - /* ------------------------------------------------------------ */ - public boolean getStopAtShutdown() - { - return _stopAtShutdown; - } + /* ------------------------------------------------------------ */ + public boolean getStopAtShutdown() + { + return _stopAtShutdown; + } - /* ------------------------------------------------------------ */ - public void setStopAtShutdown(boolean stop) - { - //if we now want to stop - if (stop) - { - //and we weren't stopping before - if (!_stopAtShutdown) - { - //only register to stop if we're already started (otherwise we'll do it in doStart()) - if (isStarted()) - ShutdownThread.register(this); - } - } - else - ShutdownThread.deregister(this); - - _stopAtShutdown=stop; - } + /* ------------------------------------------------------------ */ + public void setStopAtShutdown(boolean stop) + { + //if we now want to stop + if (stop) + { + //and we weren't stopping before + if (!_stopAtShutdown) + { + //only register to stop if we're already started (otherwise we'll do it in doStart()) + if (isStarted()) + ShutdownThread.register(this); + } + } + else + ShutdownThread.deregister(this); + + _stopAtShutdown=stop; + } - /* ------------------------------------------------------------ */ - /** - * @return Returns the connectors. - */ - public Connector[] getConnectors() - { - return _connectors; - } + /* ------------------------------------------------------------ */ + /** + * @return Returns the connectors. + */ + public Connector[] getConnectors() + { + return _connectors; + } - /* ------------------------------------------------------------ */ - public void addConnector(Connector connector) - { - setConnectors((Connector[])LazyList.addToArray(getConnectors(), connector, Connector.class)); - } + /* ------------------------------------------------------------ */ + public void addConnector(Connector connector) + { + setConnectors((Connector[])LazyList.addToArray(getConnectors(), connector, Connector.class)); + } - /* ------------------------------------------------------------ */ - /** - * Conveniance method which calls {@link #getConnectors()} and {@link #setConnectors(Connector[])} to - * remove a connector. - * @param connector The connector to remove. - */ - public void removeConnector(Connector connector) { - setConnectors((Connector[])LazyList.removeFromArray (getConnectors(), connector)); - } + /* ------------------------------------------------------------ */ + /** + * Conveniance method which calls {@link #getConnectors()} and {@link #setConnectors(Connector[])} to + * remove a connector. + * @param connector The connector to remove. + */ + public void removeConnector(Connector connector) { + setConnectors((Connector[])LazyList.removeFromArray (getConnectors(), connector)); + } - /* ------------------------------------------------------------ */ - /** Set the connectors for this server. - * Each connector has this server set as it's ThreadPool and its Handler. - * @param connectors The connectors to set. - */ - public void setConnectors(Connector[] connectors) - { - if (connectors!=null) - { - for (int i=0;i<connectors.length;i++) - connectors[i].setServer(this); - } + /* ------------------------------------------------------------ */ + /** Set the connectors for this server. + * Each connector has this server set as it's ThreadPool and its Handler. + * @param connectors The connectors to set. + */ + public void setConnectors(Connector[] connectors) + { + if (connectors!=null) + { + for (int i=0;i<connectors.length;i++) + connectors[i].setServer(this); + } - _container.update(this, _connectors, connectors, "connector"); - _connectors = connectors; - } + _container.update(this, _connectors, connectors, "connector"); + _connectors = connectors; + } - /* ------------------------------------------------------------ */ - /** - * @return Returns the threadPool. - */ - public ThreadPool getThreadPool() - { - return _threadPool; - } + /* ------------------------------------------------------------ */ + /** + * @return Returns the threadPool. + */ + public ThreadPool getThreadPool() + { + return _threadPool; + } - /* ------------------------------------------------------------ */ - /** - * @param threadPool The threadPool to set. - */ - public void setThreadPool(ThreadPool threadPool) - { - if (_threadPool!=null) - removeBean(_threadPool); - _container.update(this, _threadPool, threadPool, "threadpool",false); - _threadPool = threadPool; - if (_threadPool!=null) - addBean(_threadPool); - } + /* ------------------------------------------------------------ */ + /** + * @param threadPool The threadPool to set. + */ + public void setThreadPool(ThreadPool threadPool) + { + if (_threadPool!=null) + removeBean(_threadPool); + _container.update(this, _threadPool, threadPool, "threadpool",false); + _threadPool = threadPool; + if (_threadPool!=null) + addBean(_threadPool); + } - /** - * @return true if {@link #dumpStdErr()} is called after starting - */ - public boolean isDumpAfterStart() - { - return _dumpAfterStart; - } + /** + * @return true if {@link #dumpStdErr()} is called after starting + */ + public boolean isDumpAfterStart() + { + return _dumpAfterStart; + } - /** - * @param dumpAfterStart true if {@link #dumpStdErr()} is called after starting - */ - public void setDumpAfterStart(boolean dumpAfterStart) - { - _dumpAfterStart = dumpAfterStart; - } + /** + * @param dumpAfterStart true if {@link #dumpStdErr()} is called after starting + */ + public void setDumpAfterStart(boolean dumpAfterStart) + { + _dumpAfterStart = dumpAfterStart; + } - /** - * @return true if {@link #dumpStdErr()} is called before stopping - */ - public boolean isDumpBeforeStop() - { - return _dumpBeforeStop; - } + /** + * @return true if {@link #dumpStdErr()} is called before stopping + */ + public boolean isDumpBeforeStop() + { + return _dumpBeforeStop; + } - /** - * @param dumpBeforeStop true if {@link #dumpStdErr()} is called before stopping - */ - public void setDumpBeforeStop(boolean dumpBeforeStop) - { - _dumpBeforeStop = dumpBeforeStop; - } + /** + * @param dumpBeforeStop true if {@link #dumpStdErr()} is called before stopping + */ + public void setDumpBeforeStop(boolean dumpBeforeStop) + { + _dumpBeforeStop = dumpBeforeStop; + } - /* ------------------------------------------------------------ */ - @Override - protected void doStart() throws Exception - { - if (getStopAtShutdown()) - { - ShutdownThread.register(this); - } - - ShutdownMonitor.getInstance().start(); // initialize + /* ------------------------------------------------------------ */ + @Override + protected void doStart() throws Exception + { + if (getStopAtShutdown()) + { + ShutdownThread.register(this); + } + + ShutdownMonitor.getInstance().start(); // initialize - LOG.info("jetty-"+__version); - HttpGenerator.setServerVersion(__version); - - MultiException mex=new MultiException(); + LOG.info("jetty-"+__version); + HttpGenerator.setServerVersion(__version); + + MultiException mex=new MultiException(); - if (_threadPool==null) - setThreadPool(new QueuedThreadPool()); + if (_threadPool==null) + setThreadPool(new QueuedThreadPool()); - try - { - super.doStart(); - } - catch(Throwable e) - { - mex.add(e); - } + try + { + super.doStart(); + } + catch(Throwable e) + { + mex.add(e); + } - if (_connectors!=null && mex.size()==0) - { - for (int i=0;i<_connectors.length;i++) - { - try{_connectors[i].start();} - catch(Throwable e) - { - mex.add(e); - } - } - } + if (_connectors!=null && mex.size()==0) + { + for (int i=0;i<_connectors.length;i++) + { + try{_connectors[i].start();} + catch(Throwable e) + { + mex.add(e); + } + } + } - if (isDumpAfterStart()) - dumpStdErr(); + if (isDumpAfterStart()) + dumpStdErr(); - mex.ifExceptionThrow(); - } + mex.ifExceptionThrow(); + } - /* ------------------------------------------------------------ */ - @Override - protected void doStop() throws Exception - { - if (isDumpBeforeStop()) - dumpStdErr(); + /* ------------------------------------------------------------ */ + @Override + protected void doStop() throws Exception + { + if (isDumpBeforeStop()) + dumpStdErr(); - MultiException mex=new MultiException(); + MultiException mex=new MultiException(); - if (_graceful>0) - { - if (_connectors!=null) - { - for (int i=_connectors.length;i-->0;) - { - LOG.info("Graceful shutdown {}",_connectors[i]); - try{_connectors[i].close();}catch(Throwable e){mex.add(e);} - } - } + if (_graceful>0) + { + if (_connectors!=null) + { + for (int i=_connectors.length;i-->0;) + { + LOG.info("Graceful shutdown {}",_connectors[i]); + try{_connectors[i].close();}catch(Throwable e){mex.add(e);} + } + } - Handler[] contexts = getChildHandlersByClass(Graceful.class); - for (int c=0;c<contexts.length;c++) - { - Graceful context=(Graceful)contexts[c]; - LOG.info("Graceful shutdown {}",context); - context.setShutdown(true); - } - Thread.sleep(_graceful); - } + Handler[] contexts = getChildHandlersByClass(Graceful.class); + for (int c=0;c<contexts.length;c++) + { + Graceful context=(Graceful)contexts[c]; + LOG.info("Graceful shutdown {}",context); + context.setShutdown(true); + } + Thread.sleep(_graceful); + } - if (_connectors!=null) - { - for (int i=_connectors.length;i-->0;) - try{_connectors[i].stop();}catch(Throwable e){mex.add(e);} - } + if (_connectors!=null) + { + for (int i=_connectors.length;i-->0;) + try{_connectors[i].stop();}catch(Throwable e){mex.add(e);} + } - try {super.doStop(); } catch(Throwable e) { mex.add(e);} + try {super.doStop(); } catch(Throwable e) { mex.add(e);} - mex.ifExceptionThrow(); + mex.ifExceptionThrow(); - if (getStopAtShutdown()) - ShutdownThread.deregister(this); - } + if (getStopAtShutdown()) + ShutdownThread.deregister(this); + } - /* ------------------------------------------------------------ */ - /* Handle a request from a connection. - * Called to handle a request on the connection when either the header has been received, - * or after the entire request has been received (for short requests of known length), or - * on the dispatch of an async request. - */ - public void handle(AbstractHttpConnection connection) throws IOException, ServletException - { - final String target=connection.getRequest().getPathInfo(); - final Request request=connection.getRequest(); - final Response response=connection.getResponse(); + /* ------------------------------------------------------------ */ + /* Handle a request from a connection. + * Called to handle a request on the connection when either the header has been received, + * or after the entire request has been received (for short requests of known length), or + * on the dispatch of an async request. + */ + public void handle(AbstractHttpConnection connection) throws IOException, ServletException + { + final String target=connection.getRequest().getPathInfo(); + final Request request=connection.getRequest(); + final Response response=connection.getResponse(); - if (LOG.isDebugEnabled()) - { - LOG.debug("REQUEST "+target+" on "+connection); - handle(target, request, request, response); - LOG.debug("RESPONSE "+target+" "+connection.getResponse().getStatus()+" handled="+request.isHandled()); - } - else - handle(target, request, request, response); - } + if (LOG.isDebugEnabled()) + { + LOG.debug("REQUEST "+target+" on "+connection); + handle(target, request, request, response); + LOG.debug("RESPONSE "+target+" "+connection.getResponse().getStatus()+" handled="+request.isHandled()); + } + else + handle(target, request, request, response); + } - /* ------------------------------------------------------------ */ - /* Handle a request from a connection. - * Called to handle a request on the connection when either the header has been received, - * or after the entire request has been received (for short requests of known length), or - * on the dispatch of an async request. - */ - public void handleAsync(AbstractHttpConnection connection) throws IOException, ServletException - { - final AsyncContinuation async = connection.getRequest().getAsyncContinuation(); - final AsyncContinuation.AsyncEventState state = async.getAsyncEventState(); + /* ------------------------------------------------------------ */ + /* Handle a request from a connection. + * Called to handle a request on the connection when either the header has been received, + * or after the entire request has been received (for short requests of known length), or + * on the dispatch of an async request. + */ + public void handleAsync(AbstractHttpConnection connection) throws IOException, ServletException + { + final AsyncContinuation async = connection.getRequest().getAsyncContinuation(); + final AsyncContinuation.AsyncEventState state = async.getAsyncEventState(); - final Request baseRequest=connection.getRequest(); - final String path=state.getPath(); + final Request baseRequest=connection.getRequest(); + final String path=state.getPath(); - if (path!=null) - { - // this is a dispatch with a path - final String contextPath=state.getServletContext().getContextPath(); - HttpURI uri = new HttpURI(URIUtil.addPaths(contextPath,path)); - baseRequest.setUri(uri); - baseRequest.setRequestURI(null); - baseRequest.setPathInfo(baseRequest.getRequestURI()); - if (uri.getQuery()!=null) - baseRequest.mergeQueryString(uri.getQuery()); //we have to assume dispatch path and query are UTF8 - } + if (path!=null) + { + // this is a dispatch with a path + final String contextPath=state.getServletContext().getContextPath(); + HttpURI uri = new HttpURI(URIUtil.addPaths(contextPath,path)); + baseRequest.setUri(uri); + baseRequest.setRequestURI(null); + baseRequest.setPathInfo(baseRequest.getRequestURI()); + if (uri.getQuery()!=null) + baseRequest.mergeQueryString(uri.getQuery()); //we have to assume dispatch path and query are UTF8 + } - final String target=baseRequest.getPathInfo(); - final HttpServletRequest request=(HttpServletRequest)async.getRequest(); - final HttpServletResponse response=(HttpServletResponse)async.getResponse(); + final String target=baseRequest.getPathInfo(); + final HttpServletRequest request=(HttpServletRequest)async.getRequest(); + final HttpServletResponse response=(HttpServletResponse)async.getResponse(); - if (LOG.isDebugEnabled()) - { - LOG.debug("REQUEST "+target+" on "+connection); - handle(target, baseRequest, request, response); - LOG.debug("RESPONSE "+target+" "+connection.getResponse().getStatus()); - } - else - handle(target, baseRequest, request, response); + if (LOG.isDebugEnabled()) + { + LOG.debug("REQUEST "+target+" on "+connection); + handle(target, baseRequest, request, response); + LOG.debug("RESPONSE "+target+" "+connection.getResponse().getStatus()); + } + else + handle(target, baseRequest, request, response); - } + } - /* ------------------------------------------------------------ */ - public void join() throws InterruptedException - { - getThreadPool().join(); - } + /* ------------------------------------------------------------ */ + public void join() throws InterruptedException + { + getThreadPool().join(); + } + + /* ------------------------------------------------------------ */ - /* ------------------------------------------------------------ */ - /* ------------------------------------------------------------ */ - /** - * @return Returns the sessionIdManager. - */ - public SessionIdManager getSessionIdManager() - { - return _sessionIdManager; - } + /* ------------------------------------------------------------ */ + public void setSendServerVersion (boolean sendServerVersion) + { + _sendServerVersion = sendServerVersion; + } + + /* ------------------------------------------------------------ */ + public boolean getSendServerVersion() + { + return _sendServerVersion; + } - /* ------------------------------------------------------------ */ - /* ------------------------------------------------------------ */ - /** - * @param sessionIdManager The sessionIdManager to set. - */ - public void setSessionIdManager(SessionIdManager sessionIdManager) - { - if (_sessionIdManager!=null) - removeBean(_sessionIdManager); - _container.update(this, _sessionIdManager, sessionIdManager, "sessionIdManager",false); - _sessionIdManager = sessionIdManager; - if (_sessionIdManager!=null) - addBean(_sessionIdManager); - } + /* ------------------------------------------------------------ */ + /** + * @param sendDateHeader + */ + public void setSendDateHeader(boolean sendDateHeader) + { + _sendDateHeader = sendDateHeader; + } - /* ------------------------------------------------------------ */ - public void setSendServerVersion (boolean sendServerVersion) - { - _sendServerVersion = sendServerVersion; - } + /* ------------------------------------------------------------ */ + public boolean getSendDateHeader() + { + return _sendDateHeader; + } - /* ------------------------------------------------------------ */ - public boolean getSendServerVersion() - { - return _sendServerVersion; - } - - /* ------------------------------------------------------------ */ - /** - * @param sendDateHeader - */ - public void setSendDateHeader(boolean sendDateHeader) - { - _sendDateHeader = sendDateHeader; - } + /* ------------------------------------------------------------ */ + /** + */ + @Deprecated + public int getMaxCookieVersion() + { + return 1; + } - /* ------------------------------------------------------------ */ - public boolean getSendDateHeader() - { - return _sendDateHeader; - } + /* ------------------------------------------------------------ */ + /** + */ + @Deprecated + public void setMaxCookieVersion(int maxCookieVersion) + { + } - /* ------------------------------------------------------------ */ - /** - */ - @Deprecated - public int getMaxCookieVersion() - { - return 1; - } - - /* ------------------------------------------------------------ */ - /** - */ - @Deprecated - public void setMaxCookieVersion(int maxCookieVersion) - { - } + /* ------------------------------------------------------------ */ + /** + * Add a LifeCycle object to be started/stopped + * along with the Server. + * @deprecated Use {@link #addBean(Object)} + * @param c + */ + @Deprecated + public void addLifeCycle (LifeCycle c) + { + addBean(c); + } - /* ------------------------------------------------------------ */ - /** - * Add a LifeCycle object to be started/stopped - * along with the Server. - * @deprecated Use {@link #addBean(Object)} - * @param c - */ - @Deprecated - public void addLifeCycle (LifeCycle c) - { - addBean(c); - } + /* ------------------------------------------------------------ */ + /** + * Add an associated bean. + * The bean will be added to the servers {@link Container} + * and if it is a {@link LifeCycle} instance, it will be + * started/stopped along with the Server. Any beans that are also + * {@link Destroyable}, will be destroyed with the server. + * @param o the bean object to add + */ + @Override + public boolean addBean(Object o) + { + if (super.addBean(o)) + { + _container.addBean(o); + return true; + } + return false; + } - /* ------------------------------------------------------------ */ - /** - * Add an associated bean. - * The bean will be added to the servers {@link Container} - * and if it is a {@link LifeCycle} instance, it will be - * started/stopped along with the Server. Any beans that are also - * {@link Destroyable}, will be destroyed with the server. - * @param o the bean object to add - */ - @Override - public boolean addBean(Object o) - { - if (super.addBean(o)) - { - _container.addBean(o); - return true; - } - return false; - } + /** + * Remove a LifeCycle object to be started/stopped + * along with the Server + * @deprecated Use {@link #removeBean(Object)} + */ + @Deprecated + public void removeLifeCycle (LifeCycle c) + { + removeBean(c); + } - /** - * Remove a LifeCycle object to be started/stopped - * along with the Server - * @deprecated Use {@link #removeBean(Object)} - */ - @Deprecated - public void removeLifeCycle (LifeCycle c) - { - removeBean(c); - } - - /* ------------------------------------------------------------ */ - /** - * Remove an associated bean. - */ - @Override - public boolean removeBean (Object o) - { - if (super.removeBean(o)) - { - _container.removeBean(o); - return true; - } - return false; - } + /* ------------------------------------------------------------ */ + /** + * Remove an associated bean. + */ + @Override + public boolean removeBean (Object o) + { + if (super.removeBean(o)) + { + _container.removeBean(o); + return true; + } + return false; + } - /* ------------------------------------------------------------ */ - /* - * @see org.eclipse.util.AttributesMap#clearAttributes() - */ - public void clearAttributes() - { - _attributes.clearAttributes(); - } + /* ------------------------------------------------------------ */ + /* + * @see org.eclipse.util.AttributesMap#clearAttributes() + */ + public void clearAttributes() + { + _attributes.clearAttributes(); + } - /* ------------------------------------------------------------ */ - /* - * @see org.eclipse.util.AttributesMap#getAttribute(java.lang.String) - */ - public Object getAttribute(String name) - { - return _attributes.getAttribute(name); - } + /* ------------------------------------------------------------ */ + /* + * @see org.eclipse.util.AttributesMap#getAttribute(java.lang.String) + */ + public Object getAttribute(String name) + { + return _attributes.getAttribute(name); + } - /* ------------------------------------------------------------ */ - /* - * @see org.eclipse.util.AttributesMap#getAttributeNames() - */ - public Enumeration getAttributeNames() - { - return AttributesMap.getAttributeNamesCopy(_attributes); - } + /* ------------------------------------------------------------ */ + /* + * @see org.eclipse.util.AttributesMap#getAttributeNames() + */ + public Enumeration getAttributeNames() + { + return AttributesMap.getAttributeNamesCopy(_attributes); + } - /* ------------------------------------------------------------ */ - /* - * @see org.eclipse.util.AttributesMap#removeAttribute(java.lang.String) - */ - public void removeAttribute(String name) - { - _attributes.removeAttribute(name); - } + /* ------------------------------------------------------------ */ + /* + * @see org.eclipse.util.AttributesMap#removeAttribute(java.lang.String) + */ + public void removeAttribute(String name) + { + _attributes.removeAttribute(name); + } - /* ------------------------------------------------------------ */ - /* - * @see org.eclipse.util.AttributesMap#setAttribute(java.lang.String, java.lang.Object) - */ - public void setAttribute(String name, Object attribute) - { - _attributes.setAttribute(name, attribute); - } + /* ------------------------------------------------------------ */ + /* + * @see org.eclipse.util.AttributesMap#setAttribute(java.lang.String, java.lang.Object) + */ + public void setAttribute(String name, Object attribute) + { + _attributes.setAttribute(name, attribute); + } - /* ------------------------------------------------------------ */ - /** - * @return the graceful - */ - public int getGracefulShutdown() - { - return _graceful; - } + /* ------------------------------------------------------------ */ + /** + * @return the graceful + */ + public int getGracefulShutdown() + { + return _graceful; + } - /* ------------------------------------------------------------ */ - /** - * Set graceful shutdown timeout. If set, the internal <code>doStop()</code> method will not immediately stop the - * server. Instead, all {@link Connector}s will be closed so that new connections will not be accepted - * and all handlers that implement {@link Graceful} will be put into the shutdown mode so that no new requests - * will be accepted, but existing requests can complete. The server will then wait the configured timeout - * before stopping. - * @param timeoutMS the milliseconds to wait for existing request to complete before stopping the server. - * - */ - public void setGracefulShutdown(int timeoutMS) - { - _graceful=timeoutMS; - } + /* ------------------------------------------------------------ */ + /** + * Set graceful shutdown timeout. If set, the internal <code>doStop()</code> method will not immediately stop the + * server. Instead, all {@link Connector}s will be closed so that new connections will not be accepted + * and all handlers that implement {@link Graceful} will be put into the shutdown mode so that no new requests + * will be accepted, but existing requests can complete. The server will then wait the configured timeout + * before stopping. + * @param timeoutMS the milliseconds to wait for existing request to complete before stopping the server. + * + */ + public void setGracefulShutdown(int timeoutMS) + { + _graceful=timeoutMS; + } - /* ------------------------------------------------------------ */ - @Override - public String toString() - { - return this.getClass().getName()+"@"+Integer.toHexString(hashCode()); - } + /* ------------------------------------------------------------ */ + @Override + public String toString() + { + return this.getClass().getName()+"@"+Integer.toHexString(hashCode()); + } - /* ------------------------------------------------------------ */ - @Override - public void dump(Appendable out,String indent) throws IOException - { - dumpThis(out); - dump(out,indent,TypeUtil.asList(getHandlers()),getBeans(),TypeUtil.asList(_connectors)); - } + /* ------------------------------------------------------------ */ + @Override + public void dump(Appendable out,String indent) throws IOException + { + dumpThis(out); + dump(out,indent,TypeUtil.asList(getHandlers()),getBeans(),TypeUtil.asList(_connectors)); + } - /* ------------------------------------------------------------ */ - public boolean isUncheckedPrintWriter() - { - return _uncheckedPrintWriter; - } + /* ------------------------------------------------------------ */ + public boolean isUncheckedPrintWriter() + { + return _uncheckedPrintWriter; + } - /* ------------------------------------------------------------ */ - public void setUncheckedPrintWriter(boolean unchecked) - { - _uncheckedPrintWriter=unchecked; - } + /* ------------------------------------------------------------ */ + public void setUncheckedPrintWriter(boolean unchecked) + { + _uncheckedPrintWriter=unchecked; + } - /* ------------------------------------------------------------ */ - /* A handler that can be gracefully shutdown. - * Called by doStop if a {@link #setGracefulShutdown} period is set. - * TODO move this somewhere better - */ - public interface Graceful extends Handler - { - public void setShutdown(boolean shutdown); - } + /* ------------------------------------------------------------ */ + /* A handler that can be gracefully shutdown. + * Called by doStop if a {@link #setGracefulShutdown} period is set. + * TODO move this somewhere better + */ + public interface Graceful extends Handler + { + public void setShutdown(boolean shutdown); + } - /* ------------------------------------------------------------ */ - public static void main(String...args) throws Exception - { - System.err.println(getVersion()); - } + /* ------------------------------------------------------------ */ + public static void main(String...args) throws Exception + { + System.err.println(getVersion()); + } }