鍍金池/ 問(wèn)答/Java  網(wǎng)絡(luò)安全/ 分模塊開(kāi)發(fā)時(shí),Jetty為何不能加載META-INF中的資源文件?

分模塊開(kāi)發(fā)時(shí),Jetty為何不能加載META-INF中的資源文件?

1、開(kāi)發(fā)環(huán)境:eclipse + Maven + Jetty9(嵌入式) + JDK8 + servlet3.0
2、實(shí)現(xiàn)過(guò)程:將js、css等靜態(tài)資源文件封裝到模塊Jar包的META-INF/resources中,希望利用servlet3的特性,可以直接被Web訪問(wèn)到,實(shí)現(xiàn)各模塊的靜態(tài)文件單獨(dú)部署的目的。
3、目前的情況是替換成Tomcat8環(huán)境確實(shí)可以,說(shuō)明模塊的Jar包應(yīng)該沒(méi)有問(wèn)題。但在Jetty9環(huán)境無(wú)法訪問(wèn),個(gè)人懷疑還是我的Jetty封裝部分存在問(wèn)題。
4、原來(lái)使用的Jetty8無(wú)法實(shí)現(xiàn),所以才換成Jetty9,依然如此。
5、想有過(guò)經(jīng)驗(yàn)的答友提供援助,嵌入式的Jetty9如何才能支持在WEB端直接訪問(wèn)到JAR包中的META-INFO/resource下的靜態(tài)資源文件

6、我的Jetty封裝:

/**
 * 嵌入式Jetty封裝
 * @author netwild
 *
 */
public class MyJetty {

    private static Log log = Log.getLog(MyJetty.class);

    private Server server;
    private WebAppContext handler;
    
    private String host = "127.0.0.1";
    private Integer port = 80;
    private String webAppDir = "src/main/webapp";
    private String contextPath = "/";
    
    private boolean running = false;

    public MyJetty() {
    }

    public MyJetty(String host, Integer port, String webAppDir, String contextPath) {
        this.host = host;
        this.port = port;
        this.webAppDir = webAppDir;;
        this.contextPath = contextPath;
    }

    /**
     * 啟動(dòng)服務(wù)
     * @return
     */
    public boolean start() {
        if (!running) {
            try {
                initServer();
                server.start();
                running = false;
                log.info("EServer啟動(dòng)成功!");
            } catch (Throwable ex) {
                log.info("EServer啟動(dòng)失?。?);
                log.error(ex.toString(), ex);
                stop();
                return false;
            }
        }
        return true;
    }

    /**
     * 初始化服務(wù)
     */
    private void initServer() {
        InetSocketAddress address = new InetSocketAddress(host, port);
        server = new Server(address);
        server.setStopAtShutdown(true);

        handler = new WebAppContext();
        handler.setContextPath(contextPath);
        handler.setResourceBase(webAppDir);
        handler.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "false");
        handler.setInitParameter("org.eclipse.jetty.servlet.Default.useFileMappedBuffer", "false");    // webApp.setInitParams(Collections.singletonMap("org.mortbay.jetty.servlet.Default.useFileMappedBuffer", "false"));
        server.setHandler(handler);
    }

    /**
     * 停止服務(wù)
     * @return
     */
    public boolean stop() {
        if (running) {
            try {
                server.stop();
                running = false;
                log.info("EServer停止成功!");
            } catch (Exception ex) {
                log.info("EServer停止失?。?);
                log.error(ex.toString(), ex);
                return false;
            }
        }
        return true;
    }

}
回答
編輯回答
涼心人

據(jù)我所知, jetty沒(méi)有相關(guān)的實(shí)現(xiàn), 用tomcat7以上的版本吧

2017年5月16日 23:43