java – 未配置嵌入式jetty webserver JSP支持

我目前将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项目生成了一个示例项目,展示了如何在嵌入式Jetty中使用JSP

https://github.com/jetty-project/embedded-jetty-jsp

注意……

>所需的ClassLoader类型
> scratchDir声明
> ServletContainerInitializer设置
> Jsp Servlet Holder和映射
> InstanceManager

(仅举几个大的)

上一篇:java – 错误:(2,0)找不到ID为’jetty’的插件


下一篇:AVUE "productCount is not a string"