将JBOSS WAR文件夹转换为可执行JAR

时间:2009-10-29 21:25:11

标签: java crystal-reports jboss

我有一个ANT构建脚本,它将WAR文件夹部署到我的JBOSS部署目录中。我可以将其转换为可执行的WAR / JAR文件并运行它吗?

例如,如果我的文件夹被调用:MYAPP.WAR,我可以生成:NEWAPP.WAR,其中NEWAPP.WAR是可执行文件。如果我只是将它放在Jboss目录中并启动JBOSS它会把它拿起来吗?我应该首先将原始文件夹重命名为其他内容吗?


编辑:对不起,看来我不是很清楚。我问这个的原因是因为我正在尝试使用Crystal Reports for Eclipse。当我使用他们的插件创建一个新项目时,它工作正常,当我手动将库添加到现有的动态Web项目时,问题出现了。这是因为插件需要Jboss来部署项目。在这样做时,Jboss接受整个项目并将其部署在一个新的WAR文件中。问题是这个特定的项目旨在扩展现有的应用程序。所以我通常做的是通过一个ant脚本来部署我的代码,该脚本将所有文件放在一个现有的WAR文件夹下并从Eclipse启动Jboss但是我没有将它配置为部署,它只是启动App,因为WAR文件夹就在那里。

使用Crystal Reports插件时,会发生以下情况: 1)如果我配置要部署的项目,我当然会得到错误,因为我的Eclipse项目不包括原始项目的所有配置文件(如XML等)。我不想将它们包含在扩展项目中,因为它会影响我的整个源代码控制脚本。 2)如果我更新我的Ant脚本,可以简单地包含由crystal report添加的所有类和文件,我得到一个ZipException。在浏览代码时,似乎Crystal Reports代码假定代码部署在单个WAR文件中并尝试提取所需的配置和报告文件,但由于项目部署在War文件夹中,因此当然失败

因此,我提出这个问题的理由是:如果我将使用ANT脚本创建的WAR文件夹转换为单个WAR文件,则Crystal Reports代码可以正常工作。

想法?你们都更困惑吗?

3 个答案:

答案 0 :(得分:0)

你似乎在这里混淆了两个概念:

WAR file用于打包Web应用程序。没有(并且不会在应用程序服务器或servlet容器之外运行)是没有意义的。没有“可执行”WAR文件这样的东西;但是,只要容器配置得当,它确实可以进行热部署(例如,只要在没有容器重启的情况下将其部署到指定的文件夹中就部署)。

JAR file用于打包一组类和/或资源,可能构成一个应用程序。在JAR文件的清单中可以declare an entry point,以便运行java -jar jar_file_name将导致启动指定的入口类。在OS中,默认情况下将java -jar ...关联到.jar文件扩展名,直接启动jar(从命令行/通过双击/ etc ...)。这就是它的名字“可执行jar”。

答案 1 :(得分:0)

当你说“可执行”时,似乎你的意思不是大多数人。如果您有一个名为MYAPP.WAR的目录,当您将其放置在部署目录中时会自动进行部署,您只需将其压缩(zip _MYAPP.WAR MYAPP.WAR)并通过将其放置在部署目录中来部署_MYAPP.WAR。是的,你应该在这之前取消部署MYAPP.WAR。

您还可以同时创建既可以作为可执行JAR文件又可部署WAR文件的存档。 Hudson这样做,你可以通过研究他们的WAR文件来了解他们是如何做到的。

答案 2 :(得分:0)

我不太了解你的问题,但也许你正在寻找JBoss Embedded。

http://www.jboss.org/community/wiki/EmbeddedJBoss