Необходимо понимать дескриптор и структуру WAR - проект Flex в рамках WAR - PullRequest
2 голосов
/ 15 января 2012

Я пытаюсь понять, почему я не могу запустить SWF-файл с URL-адреса после запуска mvm jetty: запустите мой проект.

Проект успешно собран и выдает 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.

Когда я запускаю mvn jetty: run, я получаю следующую печатьна консоль: enter image description here

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

enter image description here

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

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

Ответы [ 3 ]

1 голос
/ 15 января 2012

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

Все еще не уверен, почему причал: бег не работал правильно - но я в порядке.

Спасибо Flextras за помощь ...

1 голос
/ 15 января 2012

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

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

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

0 голосов
/ 17 января 2012

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

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

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

Подробнее см. http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin.

...