一尘不染

未配置嵌入式Jetty Web服务器JSP支持

jsp

我目前将Jetty嵌入到应用程序中。Jetty服务器启动,我可以在项目中看到文件,但是当我尝试查看JSP文件时,它说

HTTP错误500
访问/web/index.jsp时出现问题。原因:
未配置JSP支持

我在这里还阅读了其他一些文章,并在线阅读了一些教程,其中大多数都谈论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;
}

码头服务器

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();
}
}

服务器控件

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();
}

}

我以前从未尝试过使用码头嵌入式设备,因此我可能会丢失一些东西。我在网上在线阅读了教程,它似乎对他们有用。

任何帮助将是巨大的,谢谢!


阅读 357

收藏
2020-06-08

共1个答案

一尘不染

设法解决这个问题。

我要做的就是创建一个WAR,然后将以下代码行添加到WebBuilderContext类中。

webAppContext.setExtractWAR( true );    
webAppContext.setWar( "path/to/your/war/file/here" );

我正在使用ANT进行构建,因此每次添加时都只需添加一个新的WAR目标即可生成WAR文件。

希望这对其他人有帮助。

2020-06-08