需要了解WAR描述符和结构 - WAR中的Flex项目

时间:2012-01-14 22:03:12

标签: java flex maven maven-2 maven-jetty-plugin

我试图理解为什么在启动mvm jetty后无法从URL启动SWF:在我的项目上运行。

该项目已成功构建并在maven目标目录中生成了Falcon-WAR-0.0.1-SNAPSHOT.war。在此文件中包含以下文件 - 并包含从Flex项目编译的.swf文件。

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的工件ID相同,因此它是FALCON-WAR。

当我启动mvn jetty:run时,我得到以下打印到控制台: enter image description here

但是当我尝试在我的浏览器上导航到http://localhost:8080/FALCON-WAR时,我希望从web.xml定义中启动.swf文件时得到以下内容。

enter image description here

任何人都可以帮助我理解我做错了什么吗?这可以让我更多地了解Web容器如何解释.war结构 - 但这是我在Web应用程序开发中的第一次尝试,可以轻松一点!

非常感谢提前。

3 个答案:

答案 0 :(得分:1)

我对Jetty不太了解;但是你在“输出”中看到的内容看起来像是一个Web服务器目录列表。目录中是否还列出了其他内容?您确定Web根目录指向您在第一个快照中显示的目录吗? [如果是这样,meta-inf目录和falcon-flights文件在哪里?如果您将URL更改为此内容该怎么办:

  

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

这会给你一个404错误,还是正确加载?

答案 1 :(得分:1)

最终我使用了mvn jetty:run =爆炸目标。此目标指向WAR文件的构建目录(问题文本中图像中的第一个快照),然后上下文路径有效。

仍然不确定为什么jetty:run无法正常工作 - 但我已经开始运行了。

感谢Flextras的帮助...

答案 2 :(得分: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