1. 程式人生 > >Jetty啟動時不能修改 js等靜態檔案的解決

Jetty啟動時不能修改 js等靜態檔案的解決

Jetty啟動後,如果修改javascript檔案,將不能儲存,使除錯很麻煩。這是因為使用了CACHE,JETTY說是WINDOWS下的一個限制。可以通過如下方法修正:

解壓出jetty.jar中的org/mortbay/jetty/webapp/webdefault.xml檔案,將這一選項由true改為false,另存到src/main/resources目錄,或者其它自選目錄。
<init-param>
<param-name>useFileMappedBuffer</param-name>
<param-value>true</param-value> <!-- change to false -->
</init-param>
把修改後的webdefault.xml檔案跟pom.xml放在一起

修改pom.xml裡的Jetty Plugin的配置,加入webdefault.xml

...
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.7</version>
<configuration>
<contextPath>/</contextPath>
<webDefaultXml>webdefault.xml</webDefaultXml>
...
</configuration>
...
</plugin>
...

附。。。在專案中用到的Jetty用Java程式碼Call Jetty啟動的方法

import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;

public class JettyStarter {
    
    public JettyStarter() {
        
    }
    public static void main(String[] args) {
        try {
            Server server = new Server();
            Connector connector = new SelectChannelConnector();
            connector.setPort(9999);
            server.setConnectors(new Connector[] { connector });
            
            WebAppContext webapp = new WebAppContext();
            webapp.setContextPath("/");
            webapp.setResourceBase("./src/main/webapp");
            webapp.setDefaultsDescriptor("./webdefault.xml");
            server.setHandler(webapp);

            server.start();
            server.join();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}