Jetty使用过程中常见错误:

来自:http://wang5598.iteye.com/blog/1562352

 

一、空指针异常:

Xml代码  收藏代码
  1. java.lang.NullPointerException at sun.net.www.protocol.jar.JarURLConnection.getUseCaches(JarURLConnection.java:309)    

 可以通过在etc/jetty.xml中添加

Xml代码  
  1. <Set class="org.eclipse.jetty.util.resource.Resource" name="defaultUseCaches">false</Set>    

 
出处:http://stackoverflow.com/questions/7715985/jsf2-on-jetty-gives-randomly-zip-file-closed-but-works-when-running-from-maven
===========================================

二、"zip file closed"的错误:
  将jetty_home/lib/jetty-webapp-8.1.4.v20120524.jar中webdefault.xml中gzip的value由true(默认)改为false,就不会再出现该错误了。

Xml代码  收藏代码
  1. <init-param>    
  2.   <param-name>gzip</param-name>     
  3.   <param-value>false</param-value>     
  4. </init-param>     

   按上述办法处理,只是治标不治本;原本启用Gzip是为了实现http传输压缩,提供网站的访问效率,如果需要实现改功能的话,建议还是设置gzip为true;在true的情况下,需要在web.xml中配置gzip的过滤器:

Xml代码  收藏代码
  1.  <filter>  
  2. <filter-name>jettyGzipFilter</filter-name>  
  3. <filter-class>org.eclipse.jetty.servlets.GzipFilter</filter-class>  
  4. <init-param>  
  5. <param-name>mimeTypes</param-name>  
  6. <param-value>text/javascript,application/x-javascript,text/html,text/css,image/gif,image/png,image/jpg</param-value>  
  7. </init-param>  
  8. </filter>  
  9. <filter-mapping>  
  10. <filter-name>jettyGzipFilter</filter-name>  
  11. <url-pattern>/*</url-pattern>  
  12.  </filter-mapping>  

 jettyGzipFilter的已经包含在jetty-servlets-8.1.4.v20120716.jar中,如果进行了上述配置,还是有zip file closed的话,查看jetty的版本,如果在8及其以下的版本中,在etc/jetty.xml的文档最下面,添加上:

<Set class="org.eclipse.jetty.util.resource.Resource" name="defaultUseCaches">false</Set>

这个东西本来是jetty7.6版本中出现的一个BUG,在官方的BUG report中有提到,加上上面的配置后就不会再出现错误了。

     进行了该设置后,大家可以在http://tool.chinaz.com/Gzips/ 上检测自己的网站是否启用了Gzip压缩传输。

=========================================== 
三、有些同学不会启动Jetty,囧啊:
  windows下面使用cmd的cd命令,进入到jetty的安装目录下面,直接打java -jar start.jar就可以启动了。。Linux下面就更简单。操作一样的。。
===========================================
四、在Myeclipse下Jetty不能自动部署web工程的问题:
  这是因为Jetty默认是考虑使用缓存文件以提供访问效率和稳定性来考虑的,如果是开发测试的话,可以修改掉Jetty的该项配置(webdefault.xml):默认为true,修改为false,就可以自动部署了。

Xml代码  
  1. <init-param>     
  2.  <param-name>useFileMappedBuffer</param-name>     
  3.  <param-value>false</param-value>     
  4. </init-param>     

===========================================
  还有最近看了新版本的Tomcat,其也已经加入了对异步和websocket的支持,如果您对tomcat使用比较熟悉的话,其实可以考虑使用最新版本的tomcat也可以的

posted @ 2013-09-14 22:54  gis2s  阅读(1113)  评论(0)    收藏  举报