未配置嵌入式jetty webserver JSP支持
我目前将Jetty嵌入到应用程序中。 Jetty服务器启动,我可以看到项目中的文件,但是当我尝试查看JSP文件时,它说
HTTP错误500
访问/web/index.jsp时出现问题。 原因:
未配置JSP支持
我在这里阅读了一些其他post和一些在线教程,其中大部分都是关于start.jar和maven的。 我没有使用其中任何一种我只是使用eclipse中内置的东西。
我有三节课
AppContextBuilder
public class AppContextBuilder { private WebAppContext webAppContext; public WebAppContext buildWebAppContext() { webAppContext = new WebAppContext(); webAppContext.setDescriptor( webAppContext + "/WEB-INF/web.xml" ); webAppContext.setResourceBase( "." ); webAppContext.setContextPath( "/" ); return webAppContext; }
JettyServer
import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandlerCollection; public class JettyServer { private Server server; public JettyServer() { this( 8585 ); } public JettyServer(Integer runningPort) { server = new Server( runningPort ); } public void setHandler( ContextHandlerCollection contexts ) { server.setHandler( contexts ); } public void start() throws Exception { server.start(); } public void stop() throws Exception { server.stop(); server.join(); } public boolean isStarted() { return server.isStarted(); } public boolean isStopped() { return server.isStopped(); } }
ServerControl
import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.handler.ContextHandlerCollection; public class ServerControl { public static void main( String[] args ) { Logger.getLogger().logMethodEntryMessage(); ContextHandlerCollection contexts = new ContextHandlerCollection(); contexts.setHandlers( new Handler[] { new AppContextBuilder().buildWebAppContext() } ); final JettyServer jettyServer = new JettyServer(); jettyServer.setHandler( contexts ); start( jettyServer ); Logger.getLogger().logMethodExitMessage(); } private static void start( final JettyServer jettyServer ) { Logger.getLogger().logMethodEntryMessage(); try { jettyServer.start(); Logger.getLogger().debug( "Jetty server started!" ); } catch( Exception e ) { Logger.getLogger().error( e.getMessage() ); } Logger.getLogger().logMethodExitMessage(); } }
我从来没有试过使用嵌入式docker,所以我可能会遗漏一些东西。 我在网上遵循了这个教程,但它似乎对他们有效。
任何帮助都会很棒,谢谢!
如果该代码段表示您初始化Web应用程序的方式,那么您将缺少许多 JSP初始化步骤。
Jetty项目生成了一个示例项目,展示了如何在嵌入式Jetty中使用JSP
https://github.com/jetty-project/embedded-jetty-jsp
注意……
- 所需的ClassLoader类型
- scratchDir声明
- ServletContainerInitializer设置
- Jsp Servlet Holder和映射
- InstanceManager
(仅举几个大的)
管理解决这个问题。
我所要做的就是创建一个WAR,然后将以下代码行添加到WebBuilderContext类中。
webAppContext.setExtractWAR( true ); webAppContext.setWar( "path/to/your/war/file/here" );
我正在为我的构建使用ANT,所以我每次构建时都添加了一个新的WAR目标来生成WAR文件。
希望这有助于其他人。
- Jetty响应字符编码
- 如何在Jetty类路径中将jar放入jetty / lib?
- Spring引导application.yml中的Spring Kafka SSL设置
- Jetty mysql连接池配置错误:javax.naming.NameNotFoundException; 剩余名称’env / jdbc / —(mysql 5.0 + jetty 7.0.1)
- 为什么HttpServletRequest输入流为空?
- Clojure Web Apps的优秀Web服务器/ Servlet容器?
- 如何通过Filter和FORWARD调度使用jetty continuation?
- spark java:如何处理multipart / form-data输入?
- 在没有Jetty的情况下运行GWT Speedtracer