web-dev-qa-db-fra.com

Comment créer un fichier EAR à partir d'un projet Web dynamique dans Eclipse?

Je cherche à déployer un service Web écrit dans Eclipse dans un fichier EAR. Je suis capable de l'exporter en tant que fichier WAR et de le déployer parfaitement sur Tomcat, mais le produit final ne sera pas sur Tomcat, ni sur un fichier WAR. J'aurai besoin d'utiliser Websphere en tant que serveur auquel je peux accéder et déployer des fichiers EAR valides ... si j'avais un fichier EAR à déployer.

En bref, comment exporter un fichier EAR depuis un projet Web dynamique dans Eclipse?

14
ZKSteffel

Vous devez créer un projet d'application d'entreprise (essentiellement un fichier EAR) dans Eclipse, ajouter le projet Web dynamique au projet EAR, puis exporter le tout.

11
Matt Ball

pour cela, j'utilise un script de génération Ant (vous pouvez créer un nouveau fichier Ant dans Eclipse, le stocker dans la racine de votre projet Web dynamique, puis cliquer avec le bouton droit de la souris sur> exécuter dessus lorsque vous souhaitez l'exécuter à partir d'Eclipse. copiez votre war dans un répertoire, $ {earDir} dans le script ci-dessous , et construisez-le dans un EAR (un EAR est simplement un type de 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>

Votre fichier was.policy ressemblera à ceci (ce n’est pas bien de donner toutes les autorisations, mais vous pourrez le changer plus tard une fois que vous l’aurez fait fonctionner):

    //
// 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;
};

Votre fichier application.xml ressemblera à ceci:

<?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>

Les identifiants doivent être corrects, ils doivent être uniques par EAR, je crois (ou est-ce que le serveur ne se souvient plus).

J'espère que ça aide.

1
Gurnard