5

在 OpenNMS 中调试 JSP 页面时,我一直遇到这个问题。Jetty wiki 在 webdefault.xml 中讨论了 keepGenerated ( http://docs.codehaus.org/display/JETTY/KeepGenerated ),但似乎不清楚这在嵌入式设置中是如何工作的。

4

3 回答 3

3

我知道这已经很久了,但我在互联网上的其他任何地方都没有找到答案,而且看起来这似乎并没有变得更容易。希望这会帮助某人:

从 jetty-version.jar 中提取 webdefault.xml,我的在 :C:\Documents and Settings\JB.m2\repository\org\mortbay\jetty\jetty\6.1.22\jetty-6.1.22.jar 里面org/mortbay/jetty/webapp/webdefault.xml 文件

将 webdefault.xml 放入我的项目目录

编辑 webdefault.xml 并添加以下行:

<servlet id="jsp">
 ....
  <init-param>
    <param-name>keepgenerated</param-name>
    <param-value>true</param-value>
  </init-param>

将以下内容添加到您的 maven pom.xml 配置中:

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

当您运行mvn jetty:runmaven 目标时,我的 jsp 代码现在保存在 target\work\jsp\org\apache\jsp\WEB_002dINF\jsp

于 2011-11-28T15:00:11.037 回答
2

如果您使用的是 Jetty 6,则可以使用以下代码:

String webApp = "./web/myapp"; // Location of the jsp files
String contextPath = "/myapp";
WebAppContext webAppContext = new WebAppContext(webApp, contextPath); 
ServletHandler servletHandler = webAppContext.getServletHandler();
ServletHolder holder = new ServletHolder(JspServlet.class);
servletHandler.addServletWithMapping(holder, "*.jsp");
holder.setInitOrder(0);
holder.setInitParameter("compiler", "modern");
holder.setInitParameter("fork", "false");

File dir = new File("./web/compiled/" + webApp);
dir.mkdirs();
holder.setInitParameter("scratchdir", dir.getAbsolutePath());
于 2008-09-18T12:51:25.610 回答
0

它已经被倾倒了。例如,如果您有一个名为index.jsp的文件,则会创建一个名为的文件,index_jsp.java 只需在工作目录中搜索类似的内容即可。

于 2008-09-18T12:48:16.867 回答