如何让嵌入式Jetty Web服务器转储JSP的临时Java代码
在OpenNMS中调试JSP页面时,我一直遇到这个问题。Jetty wiki在webdefault.xml中谈到了keepGenerated(),但似乎不清楚这在嵌入式设置中是如何工作的。它已经被转储了。 例如,如果您有一个名为如何让嵌入式Jetty Web服务器转储JSP的临时Java代码,java,jsp,jetty,Java,Jsp,Jetty,在OpenNMS中调试JSP页面时,我一直遇到这个问题。Jetty wiki在webdefault.xml中谈到了keepGenerated(),但似乎不清楚这在嵌入式设置中是如何工作的。它已经被转储了。 例如,如果您有一个名为index.jsp的文件,那么将创建一个名为index\u jsp.java 只需在工作目录中搜索类似内容。如果您使用的是Jetty 6,则可以使用以下代码: String webApp = "./web/myapp"; // Location of the jsp fi
index.jsp
的文件,那么将创建一个名为index\u jsp.java
只需在工作目录中搜索类似内容。如果您使用的是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());
我知道这已经有很多年了,但我在互联网上的任何地方都没有找到答案,而且这似乎也没有变得更容易。希望这将有助于某人: 从jetty-version.jar中提取您的webdefault.xml,我的位于:C:\Documents和 org/mortbay/jetty/webapp/webdefault.xml文件中的Settings\JB.m2\repository\org\mortbay\jetty\jetty\6.1.22\jetty-6.1.22.jar 将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>
org.mortbay.jetty
maven jetty插件
webdefault.xml
当您运行
mvn jetty:run
maven目标时,我的jsp代码现在保存在target\work\jsp\org\apache\jsp\WEB\u 002dINF\jspHmm中,周围有一些${page}\u jsp.java文件,但当我更改相关jsp页面时,它们似乎不会更新,即使结果直接显示在浏览器上。对不起,我一直在整理一些我还没有回答的问题。恐怕我从来没能做到这一点,但我认为这要归功于OpenNMS启动Jetty的“特殊”方式。