【问题标题】:Embedded jetty webserver JSP support not configured未配置嵌入式码头网络服务器 JSP 支持
【发布时间】:2015-02-12 16:55:40
【问题描述】:

我目前已将 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;
}

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

服务器控制

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 教程,它似乎对他们有用。

任何帮助都会很棒,谢谢!

【问题讨论】:

    标签: java jsp jetty


    【解决方案1】:

    设法解决了这个问题。

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

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

    我在构建时使用 ANT,所以每次构建时只需添加一个新的 WAR 目标来生成 WAR 文件。

    希望这对其他人有所帮助。

    【讨论】:

      【解决方案2】:

      如果该代码 sn-p 表示您如何初始化 web 应用程序,那么您缺少 很多 JSP 初始化步骤。

      有一个由 Jetty Project 制作的示例项目,展示了如何将 JSP 与嵌入式 Jetty 一起使用

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

      注意...

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

      (仅举几个大的)

      【讨论】:

      • 你知道为什么那个教程不需要做任何其他事情,但他们能够查看 JSP 吗?
      • 您链接的那个教程不能按原样工作,并且该链接页面上的 cmets 也显示了这种情况。
      • 感谢您的帮助。我能够解决它:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多