Jetty 使用 以及HTML 和Js代码无法保存问题解决

配置
<webAppConfig>
<contextPath>/</contextPath>
<defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor>
</webAppConfig>












  Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的 API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供 网络和web连接。



现在最新Jetty的版本是7.0;完全支持Eclipse。更多的信息请查看 http://hi.baidu.com/dfdkfdeijf/blog/item/cb46ed1ded0c9f0f8618bfab.html;



    项目刚采用Maven 管理,和以前的开发调试环境大有不同。最痛苦的就是 调试 HTML 和js代码既然要重新打包发布。最终解决方法是采用 Jetty。
在Maven 下面使用Jetty非常简单,首先在Maven中引用Jetty,然后 需要进行如下配置:





点击run, 系统会run jetty,并启动web 工程。无需再使用tomcat。因为tomcat 和Jetty一样都可以作为servelt 容器使用,所以在这里jetty 替代了tomcat。



但是接下来遇到一个问题。在开发中经常要修改html 和js代码,发现只要被浏览器访问过的html 或者是js,都会被锁住,修改之后无法保存,无论是在Eclipse里面保存还是在外部都无法保存。



后来在网上发现原因:jetty 缓存了静态的html,js 和css等,不能被修改,但是JSP文件是可以修改的。



解决方法是 修改jetty jar 里面的 webdefault.xml 的useFileMappedBuffer为false

<init-param>
  <param-name>useFileMappedBuffer</param-name>
  <param-value>false</param-value> 默认是true

</init-param>

接下来是要找到 webdefault.xml :
在6.0和之前的版本,所有的jetty 的class 是在一个jar里面。

在7.0的版本里面,jetty 拆成很多jar包了,而这个xml文件位于 jetty-webapp.jar里面。

用rar工具打开jar,在org/eclipse/jetty/webapp下面 发现webdefault.xml 。



在我本机:这个jar包的 存在于

C:/Documents and Settings/xxxx/.m2/repository/org/eclipse/jetty/jetty-webapp/7.1.4.v20100610 目录下面;

具体名称是jetty-webapp-7.1.4.v20100610.jar 修改其中的webdefault.xml 的useFileMappedBuffer为false,

重新jetty 启动web,成功,可以正常修改保存html和js

Sunny
MSN:[email protected]

猜你喜欢

转载自xshdch.iteye.com/blog/2354212