嵌入式码头网络服务器 JSP 支持未配置
Embedded jetty webserver JSP support not configured
我目前将 Jetty 嵌入到应用程序中。 Jetty 服务器启动,我可以看到项目中的文件,但是当我尝试查看 JSP 文件时,它显示
HTTP ERROR 500
Problem accessing /web/index.jsp. Reason:
JSP support not configured
我在这里阅读了一些其他帖子和一些在线教程,其中大部分都是关于 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();
}
}
我以前从未尝试过使用嵌入式码头,所以我可能遗漏了一些东西。不过,我遵循了 this 在线教程,它似乎对他们有用。
任何帮助都会很棒,谢谢!
如果该代码片段代表了您初始化 Web 应用程序的方式,那么您缺少 很多 JSP 个初始化步骤。
有一个由 Jetty Project 制作的示例项目展示了如何使用 JSP 和嵌入式 Jetty 在
https://github.com/jetty-project/embedded-jetty-jsp
关注...
- 需要的ClassLoader类型
- scratchDir 声明
- ServletContainerInitializer 设置
- Jsp Servlet Holder 和映射
- 实例管理器
(仅举几个大的)
设法解决了这个问题。
我所要做的就是创建一个 WAR,然后将以下代码行添加到 WebBuilderContext class。
webAppContext.setExtractWAR( true );
webAppContext.setWar( "path/to/your/war/file/here" );
我正在使用 ANT 进行构建,所以我每次构建时都添加了一个新的 WAR 目标来生成 WAR 文件。
希望这对其他人有帮助。
我目前将 Jetty 嵌入到应用程序中。 Jetty 服务器启动,我可以看到项目中的文件,但是当我尝试查看 JSP 文件时,它显示
HTTP ERROR 500
Problem accessing /web/index.jsp. Reason:
JSP support not configured
我在这里阅读了一些其他帖子和一些在线教程,其中大部分都是关于 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();
}
}
我以前从未尝试过使用嵌入式码头,所以我可能遗漏了一些东西。不过,我遵循了 this 在线教程,它似乎对他们有用。
任何帮助都会很棒,谢谢!
如果该代码片段代表了您初始化 Web 应用程序的方式,那么您缺少 很多 JSP 个初始化步骤。
有一个由 Jetty Project 制作的示例项目展示了如何使用 JSP 和嵌入式 Jetty 在
https://github.com/jetty-project/embedded-jetty-jsp
关注...
- 需要的ClassLoader类型
- scratchDir 声明
- ServletContainerInitializer 设置
- Jsp Servlet Holder 和映射
- 实例管理器
(仅举几个大的)
设法解决了这个问题。
我所要做的就是创建一个 WAR,然后将以下代码行添加到 WebBuilderContext class。
webAppContext.setExtractWAR( true );
webAppContext.setWar( "path/to/your/war/file/here" );
我正在使用 ANT 进行构建,所以我每次构建时都添加了一个新的 WAR 目标来生成 WAR 文件。
希望这对其他人有帮助。