如何在 Eclipse 中从动态 Web 项目构建 EAR 文件?

2022-09-03 07:16:58

我正在考虑将我在Eclipse中编写的Web服务部署到EAR文件中。我能够将其导出为WAR并将其部署到Tomcat上,但最终产品不会在Tomcat上,也不会是WAR文件。我需要使用Websphere作为服务器,我可以访问并可以部署有效的EAR文件...如果我有一个要部署的 EAR 文件。

长话短说,如何从 Eclipse 中的动态 Web 项目导出 EAR 文件?


答案 1

您需要在 Eclipse 中创建一个企业应用程序项目(基本上是 EAR),将动态 Web 项目添加到 EAR 项目中,然后导出整个项目。


答案 2

为此,我使用了一个 Ant 构建脚本(您可以在 Eclipse 中创建一个新的 Ant 文件,将其存储在动态 Web 项目根目录中,然后右键单击>在想要从 eclipse 运行它时在其上运行。如下所示。基本上,将你的战争复制到一个目录,在下面的脚本中${earDir},并将其构建到EAR中(EAR只是一种JAR类型):

    <target name="buildEar" depends="init">
    <copy tofile="${earDir}/" file="yourWarFile"/>
    <copy tofile="${earDir}/META-INF/application.xml" file="localDirectory/application.xml"/>
    <copy todir="${earDir}/META-INF">
        <fileset dir="localDirectory" includes="was.policy" />
    </copy>
    <jar jarfile="localDir/something.ear" basedir="${earDir}">
        <!-- Define the properties for the Manifest file. -->
        <manifest>
            <attribute name="Implementation-Vendor"  value="Company name"/>
            <attribute name="Implementation-Title"   value="Application Title"/>
            <attribute name="Implementation-Version" value="version and build number"/>
        </manifest>     
    </jar>
</target>

您的 was.policy 文件将如下所示(不宜授予所有权限,但您可以在启动并运行后稍后更改它):

    //
// Template policy file for enterprise application.
// Extra permissions can be added if required by the enterprise application.
//
// NOTE: Syntax errors in the policy files will cause the enterprise application FAIL to start.
//       Extreme care should be taken when editing these policy files. It is advised to use
//       the policytool provided by the JDK for editing the policy files
//       (WAS_HOME/java/jre/bin/policytool). 
//

grant codeBase "file:${jars}" {
};

grant codeBase "file:${connectorComponent}" {
};

grant codeBase "file:${webComponent}" {
};

grant codeBase "file:${ejbComponent}" {
};

grant codeBase "file:${application}" {
  permission java.security.AllPermission;
};

您的应用程序.xml文件将如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<application id="Application_ID" version="1.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd">
    <display-name>yourAppName</display-name>
    <module id="WebModule_1240219352859">
        <web>
            <web-uri>yourWarFile.war</web-uri>
            <context-root>urlToApplication</context-root>
        </web>
    </module>
</application>

那里的id应该没问题,它们需要对每个EAR是唯一的,我相信(或者它是服务器不记得的)。

我希望这有帮助。


推荐