2012-01-14 2 views
2

Я пытаюсь понять, почему я не могу запустить SWF из URL после запуска mvm jetty: запустить в моем проекте.Нужно понять дескриптор и структуру WAR - Проект Flex в WAR

Проект успешно создан и изготовлен Falcon-WAR-0.0.1-SNAPSHOT.war в каталоге назначения maven. В этом файле находятся следующие файлы - и включает файл .swf, скомпилированный из проекта Flex.

enter image description here

Мой web.xml очень прост и содержит следующий код:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     id="WebApp_ID" version="2.5"> 

    <display-name>Falcon Flights</display-name> 

    <welcome-file-list> 
     <welcome-file>Falcon-Flights.swf</welcome-file> 
    </welcome-file-list> 

</web-app> 

Корневой контекст моего приложения является такой же, как артефакт идентификатору WAR, так FALCON -WAR.

Когда я запускаю МВНА причала: бег, я получаю следующую печать на консоль: enter image description here

Однако, когда я пытаюсь перейти к http://localhost:8080/FALCON-WAR на моем браузере, я получаю следующее, когда я ожидаю, чтобы запустить .swf из определения web.xml.

enter image description here

Может кто-нибудь помочь мне понять, что я делаю не так? Это может быть связано с пониманием того, как веб-контейнеры интерпретируют структуры .war, но это мой первый подход к разработке веб-приложений и может сделать с толчком!

Большое спасибо заранее.

ответ

1

В конце концов я использовал mvn jetty: run = взорванный гол. Эта цель указывает на каталог сборки WAR-файла (первый снимок в изображении из текста вопроса), и тогда путь контекста был действительным.

По-прежнему не уверен, почему причал: бег работал неправильно - но я работаю.

Благодаря Flextras за помощь ...

+0

+1 Обязательно отметьте это как решение своего вопроса. Это поможет будущим людям, которые приходят на этот вопрос. – JeffryHouser

1

Не знаю много о Jetty; но то, что вы видите в своем «выводе», похоже на список каталогов веб-сервера. Есть ли что-нибудь еще в каталоге? Вы уверены, что веб-корень указан в каталоге, который вы показываете в своем первом снимке? [Если это так, где находится каталог meta-inf и файл соколов? Что делать, если вы измените URL на это:

http://localhost:8080/FALCON-WAR/Falcon-Flights.swf

ли что даст вам 404 ошибку, или он загружается нормально?

+0

Привет - да, это действительно дает мне ошибку 404. Но если вы посмотрите на снимок консоли, который был выше, он объявит контекстный путь как/FALCON-WAR. Поэтому я предполагаю, что http: // localhost: 8080/FALCON-WAR приведет меня в каталог приложения. – totalcruise

+0

В этом каталоге нет ничего, кроме папки WEB-INF. Когда я нажимаю на ссылку для этого - он тоже пуст. – totalcruise

+0

@totalcruise это звучит так, как пути веб-сервера неправильно настроены; и указывают на неправильные вещи. Я просто не знаю, как сказать вам, чтобы это исправить. – JeffryHouser

0

Это происходит потому, что jetty:run работает от источника вашего Maven проекта. Хотя вы указали список каталогов цели, неясно, как ваш SWF попал туда - я бы предположил, что это зависимость вашего модуля WAR, а не проведенная в src/main/webapp или аналогичная.

jetty:run-exploded сначала создает целевой каталог, а затем запускает приложение оттуда. Поэтому это будет работать лучше.

Другой вариант: jetty:run-war, который строит WAR и запускает приложение из этого. Однако это будет медленнее, чем jetty:run-exploded, что требует еще одного шага сборки.

Для получения более подробной информации см. http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin.

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