2012-05-25 2 views
5

Я новичок в веб-разработке и при использовании встроенного причала. Исходный код, представленный ниже, разработан с использованием eclipse IDE. Я должен запустить сервер причала программно, у меня нет возможности запустить его через командную строку. Он должен быть очень легким веб-интерфейсом, поскольку он будет запущен из системы с низкой скоростью памяти/обработки.с использованием встроенного причала для создания веб-интерфейса

Я разработал следующую структуру каталогов в ECLIPSE

JettyExample <Project> 
    src 
    sample_package 
     HelloWorld.java 
    WEB-INF 
     index.html 
     web.xml 

Исходный код Helloworld.java

public static void main(String[] args) throws Exception 
{ 

    Server server = new Server(8080); 
    ResourceHandler resource_handler = new ResourceHandler(); 
    resource_handler.setDirectoriesListed(true); 
    resource_handler.setResourceBase(args.length == 2?args[1]:"."); 
    resource_handler.setWelcomeFiles(new String[]{ "WEB-INF/index.html" }); 


    System.out.println("serving " + resource_handler.getBaseResource()); 

    HandlerList handlers = new HandlerList(); 
    handlers.setHandlers(new Handler[] { resource_handler, new DefaultHandler() }); 
    server.setHandler(handlers); 
    server.start(); 
    server.join(); 

} 

index.html является

<html> 
<head> 
    <title>HTML Generator Sample Page</title> 
</head> 
<body> 
    <h1 style="text-align: center;"> 
     Agent Management Interface</h1> 
    <ol> 
     <li> 
      Start Platform</li> 
     <li> 
      Show Agent Status</li> 
     <li> 
      Create Dummy Agent</li> 
     <li> 
      Intiate Request Message</li> 
     <li> 
      Stop agent</li> 
     <li> 
      Stop Platform</li> 
    </ol> 
    <p> 
     Enter option :</p> 
    <p> 
     <textarea cols="10" name="myTextBox" rows="1" style="width: 104px; height: 25px;"></textarea></p> 
    <p> 
     <input name="option_selector" type="submit" value="option_selector" /></p> 
</body> 

файл web.xml является обычным, со списком файлов приветствия. , когда я запускаю сервер и запускаю localhost: 8080 в веб-браузере, я получаю ошибку 404 Я не уверен, что мне нужно добавить в файл web.xml или ссылку на файл web.xml неверно в основном методе HelloWorld.java.

Любые намеки/предложения будут полезны EDIT 1:

Я включаю серверном api.jar файл и jetty.jar в пути к классам и не делать с помощью плагина Maven для затмения.

EDIT2:

2012-05-25 14:40:39.253:DBUG:oejs.AsyncHttpConnection:async request (null null)@17160330 [email protected] 
2012-05-25 14:40:39.260:DBUG:oejs.Server:REQUEST/on org.eclipse.jett[email protected][email protected]:8080<->127.0.0.1:55062 
2012-05-25 14:40:39.264:DBUG:oejs.Server:RESPONSE/200 
2012-05-25 14:40:39.267:DBUG:oejs.AsyncHttpConnection:async request (null null)@17160330 [email protected] 
2012-05-25 14:40:39.272:DBUG:oejs.AsyncHttpConnection:async request (null null)@17160330 [email protected] 
2012-05-25 14:40:39.273:DBUG:oejs.Server:REQUEST /jetty-dir.css on org.eclipse.jett[email protected][email protected]:8080<->127.0.0.1:55062 
2012-05-25 14:40:39.275:DBUG:oejs.Server:RESPONSE /jetty-dir.css 404 
+0

Если вы ввели весь путь к файлу, все еще выдаст вам ошибку? – BOSS

+0

@abhishek bose Я могу видеть структуру каталогов, только когда я набираю localhost: 8080/src/WEB-INF, я могу увидеть страницу html с страницы index.html – bhavs

ответ

2

Вы настроили свой приветственный файл в WEB-INF/index.html. Элементы, находящиеся внутри папки WEB-INF, видны только в контейнере сервлетов и недоступны вне контейнера.

Это не сработает, поскольку index.html скрыт за WEB-INF. Кроме того, при работе с WEB-INF, это общепринято для доступа к нему из корня приложения, такие как /WEB-INF/file.html:

resource_handler.setWelcomeFiles(new String[]{ "WEB-INF/index.html" }); 

Если включить только файл index.html в виде добро пожаловать файл, а также убедитесь, index.html в корневом каталоге вашего приложения, то Jetty сервер должен быть в состоянии найти его:

resource_handler.setWelcomeFiles(new String[]{ "index.html" }); 

обязательно перезагрузить Jetty после внесения этого изменения, так как приложение будет нуждаться для перезагрузки этой информации.

Кроме того, при настройке нового веб-приложения на сервере, как правило, рекомендуется перевести уровни ведения журнала на весь уровень. Сервер и инфраструктура обычно регистрируются на более низких уровнях, поэтому они не мешают журналам приложений; однако в этом случае вам нужно посмотреть, какие ресурсы пытается загрузить сервлет-контейнер при загрузке localhost: 8080 в вашем браузере.

Чтобы уточнить, метод Java ResourceHandler.setWelcomeFiles аналогичен настройке сервера через Интернет.XML в не внедренного Jetty, используя следующую запись XML:

<welcome-file-list> 
      <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 

Есть несколько примеров, и больше документации на Eclipse Wiki Page on Embedding Jetty, не забудьте проверить их для получения дополнительных указаний.

структура файла встроенного Jetty 6:

Ниже приведен пример файла структура копии встроенного Jetty, что у меня есть. Обратите внимание, что index.html находится в корне, прямо рядом с src:

build.properties* index.html* README.textile* src/ war/ 
build.xml*   licenses/ server/   test/ WEB-INF/ 
+0

, спасибо за предложение изменить уровни ведения журнала, даже после этого change, когда я набираю localhost: 8080 Теперь я вижу структуру каталогов моей базы кода, когда я нажимаю на папку src/WEB-INF, я могу видеть созданную html-страницу. Я обновляю вопрос сообщениями журнала с увеличением уровней ведения журнала – bhavs

+1

ok. переместите index.html в ту же папку, что и src, поэтому они являются братьями и сестрами. Ваш файл index.html на 2 уровня глубже, чем у Jetty. Кроме того, тот факт, что WEB-INF видимый, свидетельствует о том, что ни один из файлов конфигурации ничего не делает, поскольку контейнер обычно скрывает их по умолчанию. Но это нормально, так как вы настраиваете программно вместо файлов XML ... – jmort253

+0

спасибо за ваше предложение, это помогло, я могу просмотреть страницу сейчас – bhavs

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