2015-02-12 2 views
0

В настоящее время Jetty встроен в приложение. Сервер Jetty запускается, и я могу видеть файлы в проекте, однако, когда я попытке просмотреть JSP файл, он говоритВстроенная поддержка веб-сервера встроенного сервера JSP

HTTP ERROR 500
Проблема доступа /web/index.jsp. Причина:
поддержки JSP не настроена

Я прочитал некоторые другие посты здесь и некоторые учебники онлайн и большинство из них говорит о start.jar и мавенны. Я не использую ни один из них, я просто использую встроенное в 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 учебником онлайн, хотя, похоже, для них это работает.

Любая помощь была бы замечательной, спасибо!

ответ

0

Успели решить эту проблему.

Все, что мне нужно было сделать, это создать WAR, а затем добавить следующие строки кода в класс WebBuilderContext.

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

Я использую ANT для моего строит так просто добавили новую цель WAR для создания файла WAR каждый раз, когда я строю.

Надеюсь, это поможет кому-то еще.

0

Если этот фрагмент кода представляет, как вы инициализируете свой webapp, то вам не хватает много шагов инициализации JSP.

Там пример проекта был подготовлен в рамках проекта Jetty, показывающий, как использовать JSP со встроенным Jetty в

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

Обратите внимание на ...

  • Требуемый тип ClassLoader
  • Декларация scratchDir
  • Настройка ServletContainerInitializer
  • СПЯ Servlet Holder и отображения
  • InstanceManager

(просто назвать несколько крупных)

+0

Знаете ли вы, почему этому учебнику не нужно ничего делать, но они смогли просмотреть JSP? – FMC

+0

Этот урок, который вы связали, не будет работать как есть, и комментарии на этой связанной странице также показывают, что это так. –

+0

Спасибо за помощь. Я смог его решить :) – FMC

Смежные вопросы