4

我正在尝试从嵌入式码头服务器内部部署战争文件。我的 WAR 的 WEB-INF/lib 中有 commons-logging jar。JspServlet 的 init 方法正在寻找这个 org.apache.juli.logging.LogFactory 类。我正在使用码头 7.5。

在研究如何使用嵌入式 Jetty 部署战争时,我还看到了让 jsps 工作的问题。这是否与此有关,因为它是 JspServlet 正在寻找这个类?

WAR 非常简单,基本上就是 Spring MVC 3 的 HelloWorld 示例。此时我只是在做原型。Jetty 服务器也很简单,这里是:

public class JettyServer extends Server {

    Server server;
    int port;

    public JettyServer(int port) {
        server = new Server(port);

        WebAppContext webapp = new WebAppContext();
        webapp.setContextPath("/");
        webapp.setWar("webapps/myWar.war");
        server.setHandler(webapp);
    }

    public void startServer() throws Exception {
        server.start();
        server.join();
    }
}
4

1 回答 1

3

您的构建中有一个旧的 JspServlet(您粘贴的错误来自 Tomcat 6 的 JspServlet!)

确保使用与使用相同的服务器端 JSP 支持 jar jetty-distribution--7.5.0.v2011090

这是 Jetty 附带的清单。

[jetty-distribution-7.5.0.v20110901]$ sha1sum lib/jsp/*.jar
84d1928dbcf564dab574577ac454ef7cacec2b9a  lib/jsp/com.sun.el_1.0.0.v201004190952.jar
5618cc694d1e1ce8956fa441b551c8b690547fab  lib/jsp/ecj-3.6.jar
b4628cebfe2612db3c646ffbde43029fd3d0d7a0  lib/jsp/javax.el_2.1.0.v201004190952.jar
2c891df2ef4882fd250d34d7a873061bf4c3d9bc  lib/jsp/javax.servlet.jsp_2.1.0.v201004190952.jar
582f581db2e9646d1f61313f3d96ced8c0acdac5  lib/jsp/javax.servlet.jsp.jstl_1.2.0.v201004190952.jar
3bd086e9e7bdcff906ad25fed4e5805ad101fc5e  lib/jsp/jetty-jsp-2.1-7.5.0.v20110901.jar
3ec4b7e53369ed311a3171fe6b73beb773a46e25  lib/jsp/jsp-impl-2.1.3-b10.jar
b070c22fe31d84de75135da39faff654fe42c933  lib/jsp/org.apache.taglibs.standard.glassfish_1.2.0.v201004190952.jar

Jetty 使用来自 Apache 的 Jasper 编译器,并由 Glassfish 进行了修改。

于 2013-03-08T14:02:56.253 回答