2009-10-29 138 views
0

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

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


编辑:对不起,我似乎不是很清楚。我问这个问题的原因是因为我正在尝试使用Crystal Reports for Eclipse。当我使用插件创建新项目时,它工作正常,当我手动将库添加到现有的Dynamic Web Project时,问题就出现了。这是因为该插件要求Jboss部署该项目。这样做,Jboss将完整的项目并将其部署到一个新的WAR文件中。问题在于,这个特定的项目旨在扩展现有的应用程序。所以我通常做的是通过一个ant脚本部署我的代码,该脚本将所有文件放在现有WAR文件夹下,并从Eclipse启动Jboss,但我不配置它进行部署,它只是启动应用程序,因为WAR文件夹在那里。 1)如果我配置了要部署的项目,我当然会得到错误,因为我的Eclipse项目不包括所有的配置文件(如XML等),所以我不知道如何使用Crystal Reports插件。这是原始项目的一部分。我不想将它们包含在扩展项目中,因为它会影响我的整个源代码控制脚本。 2)如果我更新我的Ant脚本,只需包含所有由crystal report添加的类和文件,就会得到一个ZipException。在阅读代码时,Crystal Reports代码似乎假定代码部署在单个WAR文件中,并试图提取所需的配置文件和报告文件,但由于该项目部署在War文件夹中,因此这当然会失败。

所以我在问这个问题的理由是:也许,如果我转换,我和我的Ant脚本到一个WAR文件创建WAR文件夹,Crystal Reports的代码会工作。

想法?你们都更加困惑了吗?

+0

通过“executable”,你是什么意思?如果您将WAR填充到相应的JBoss目录(通常为$ {JBOSS_HOME}/server/default/deploy /),它将会进行热部署。这可能是你的ANT脚本正在做的事情。 – Drew 2009-10-29 21:32:14

回答

0

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

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

JAR file是用来封装一组类和/或资源,可能构成一个应用程序。在JAR文件的清单中可能会有declare an entry point,因此运行java -jar jar_file_name会导致指定的入口类被启动。在操作系统中,java -jar ...默认为.jar文件扩展名,直接启动jar(从命令行/通过双击/ etc ...)是可能的。这就是它的名字“可执行jar”。

0

看来,你的意思是不是大多数人以外的东西,当你说“可执行”。如果您有一个名为MYAPP.WAR的目录,当您将它放入部署目录时会自动部署,您可以将其压缩(zip _MYAPP.WAR MYAPP.WAR)并将_MYAPP.WAR部署到部署目录中。是的,你应该在这之前取消部署MYAPP.WAR。

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