开源Java Servlet 容器,Jetty 9.1.1 发布,

jopen 10年前

Jetty 是一个用 Java 实现、开源、基于标准的,并且具有丰富功能的 Web 服务器和 javax.servlet 容器,支持:SPDYWebSocketOSGiJMX,JNDIJAAS。Jetty 这个项目成立于 1995 年,现在已经有非常多的成功产品基于 Jetty,比如 Apache Geromino, JBoss, IBM Tivoli, Cisco SESM 等。Jetty 可以用来作为一个传统的 Web 服务器,也可以作为一个动态的内容服务器,并且 Jetty 可以非常容易的嵌入到 Java 应用程序当中。
jetty-logo-80x22.png

特性

易用性

易用性是 Jetty 设计的基本原则,易用性主要体现在以下几个方面:

  1. 通过 XML 或者 API 来对 Jetty 进行配置;
  2. 默认配置可以满足大部分的需求;
  3. 将 Jetty 嵌入到应用程序当中只需要非常少的代码;

可扩展性

在使用了 Ajax 的 Web 2.0 的应用程序中,每个连接需要保持更长的时间,这样线程和内存的消耗量会急剧的增加。这就使得我们担心整个程序会因为单个组件陷入瓶颈而影响整个程序的性能。但是有了 Jetty:

  1. 即使在有大量服务请求的情况下,系统的性能也能保持在一个可以接受的状态。
  2. 利用 Continuation 机制来处理大量的用户请求以及时间比较长的连接。

另外 Jetty 设计了非常良好的接口,因此在 Jetty 的某种实现无法满足用户的需要时,用户可以非常方便地对 Jetty 的某些实现进行修改,使得 Jetty 适用于特殊的应用程序的需求。

易嵌入性

Jetty 设计之初就是作为一个优秀的组件来设计的,这也就意味着 Jetty 可以非常容易的嵌入到应用程序当中而不需要程序为了使用 Jetty 做修改。从某种程度上,你也可以把 Jetty 理解为一个嵌入式的Web服务器。

我们很高兴地宣布码头9.1.1的可用性!    已经解决了超过90个问题,鼓励大家尽快更新。解决的问题列在下面。      发布下载:    - http://download.eclipse.org/jetty/ The artifacts are also available in Maven Central.  P2 repositories  are available as well.    If you find an issue with this release you can open a bug through the  guided bugzilla page located here:    - https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Jetty&format=guided A reminder that both dev and prod support are offered through Webtide  (www.webtide.com), feel free to contact us through that site or ping  me directly if you are interested in learning more.    cheers,  jesse    jetty-9.1.1.v20140108 - 08 January 2014   + 408912 JDBCSessionIdManager should allow configuration of schema   + 410750 NPE Protection in Mongo save session   + 417202 Start / command line arguments with ${variable} should be expanded   + 418622 WebSocket / When rejecting old WebSocket protocols, log client     details   + 418769 Allow resourceBases in run-forked Mojo   + 418888 Added strict mode to HttpGenerator   + 419309 encode alias URIs from File.toURI   + 419911 Empty chunk causes ArrayIndexOutOfBoundsException in     InputStreamResponseListener.   + 421189 WebSocket / AbstractExtension's WebSocketPolicy is not     Session-specific   + 421314 Websocket / Connect attempt with Chrome 32+ fails with "Some     extension already uses the compress bit"   + 421697 IteratingCallback improvements   + 421775 CookiePatternRule only sets cookie if not set already   + 421794 Iterator from InputStreamProvider is not implemented properly.   + 421795 ContentProvider should have a method to release resources.   + 422192 ClientContainer.getOpenSessions() always returns null   + 422264 OutputStreamContentProvider does not work with Basic Authentication.   + 422308 Change all session/sessionid managers to use shared Scheduler   + 422386 Comma-separated <param-value>s not trimmed in GzipFilter   + 422388 Test for GzipFilter apply to resources with charset appended to the     MIME type   + 422398 moved jmx remote config to jmx-remote.mod   + 422427 improved TestConnection   + 422703 Support reentrant HttpChannel and HttpConnection   + 422723 Dispatch failed callbacks to avoid blocking selector   + 422734 messages per second in ConnectorStatistics   + 422807 fragment large written byte arrays to protect from JVM OOM bug   + 423005 reuse gzipfilter buffers   + 423048 Receiving a PING while sending a message kills the connection   + 423060 Allow ${jetty.base}/work   + 423118 ServletUpgradeRequest.getUserPrincipal() does not work   + 423185 Update permessage-deflate for finalized spec   + 423255 MBeans of SessionIdManager can leak memory on redeploy   + 423361 Ensure ServletContainerInitializers called before injecting Listeners   + 423373 Correct namespace use for JEE7 Schemas   + 423392 GzipFilter without wrapping or blocking   + 423395 Ensure @WebListeners are injected   + 423397 Jetty server does not run on Linux server startup because of  a bug     in jetty.sh script.   + 423476 WebSocket / JSR / @OnMessage(maxMessageSize=20000000) not properly     supported   + 423556 HttpSessionIdListener should be resource injectable   + 423646 WebSocket / JSR / WebSocketContainer (Client) should have its     LifeCycle stop on standalone use   + 423692 use UrlEncoded.ENCODING for merging forwarded query strings   + 423695 <HT> Horizontal-tab used as HTTP Header Field separator unsupported   + 423724 WebSocket / Rename MessageAppender.appendMessage to .appendFrame   + 423739 Start checks module files.   + 423804 WebSocket / JSR improper use of     ServerEndpointConfig.Configurator.getNegotiatedSubprotocol()   + 423875 Update jetty-distro build to use jetty-toolchain jetty-schemas 3.1.M0   + 423915 WebSocket / Active connection from IOS that goes into airplane mode     not disconnected on server side   + 423926 Remove code duplication in class IdleTimeout.   + 423930 SPDY streams are leaked.   + 423948 Cleanup and consolidate testing utilities in WebSocket   + 424014 PathContentProvider does not close its internal SeekableByteChannel.   + 424043 IteratingCallback Idle race.   + 424051 Using --list-config can result in NPE   + 424168 Module [ext] should load libraries recursively from lib/ext/   + 424180 extensible bad message content   + 424183 Start does not find LIB (Classpath) when on non-English locale   + 424284 Identify conflicts in logging when error "Multiple servlets map to     {pathspec}" occurs   + 424303 @ServletSecurity not applied on non load-on-startup servlets   + 424307 obfuscate unicode   + 424380 Augment class / Jar scanning timing log events   + 424390 Allow enabling modules via regex   + 424398 Servlet load-on-startup ordering is not obeyed   + 424497 Allow concurrent async sends   + 424498 made bytebufferendpoint threadsafe   + 424588 org.eclipse.jetty.ant.AntWebInfConfiguration does not add     WEB-INF/classes for annotation scanning   + 424598 Module [npn] downloads wrong npn jar   + 424651 org.eclipse.jetty.spdy.Flusher use of non-growable ArrayQueue yield     java.lang.IllegalStateException: Full.   + 424682 Session cannot be deserialized with form authentication   + 424706 The setMaxIdleTimeout of javax.websocket.Session does not take any     affect   + 424734 WebSocket / Expose Locale information from ServletUpgradeRequest   + 424735 WebSocket / Make ServletUpgradeRequest expose its HttpServletRequest   + 424743 Verify abort behavior in case the total timeout expires before the     connect timeout.   + 424762 ShutdownHandler hardcodes "127.0.0.1" and cannot be used with IPv6   + 424847 Deadlock in deflate-frame (webkit binary)   + 424863 IllegalStateException "Unable to find decoder for type     <javax.websocket.PongMessage>"   + 425038 WebSocketClient leaks file handles when exceptions are thrown from     open()   + 425043 Track whether pools are used correctly.   + 425049 add json mime mapping to mime.properties.