Meine Umwelt zu verwenden: Fedora 8; WAS 6.1 (wie mit Rational Application Developer 7 installiert)
Die Dokumentation ist in diesem Bereich sehr dürftig und es mangelt an praktischen Beispielen.
die WebSphere Application Server verwenden (WAS) Ant-Tasks
wie hier beschrieben ausführen zu können, müssen Sie sie von Ihrem Server Profil ist-Verzeichnis mit dem ws_ant.sh oder ws_ant laufen. Fledermaus Befehle.
<?xml version="1.0"?>
<project name="project" default="wasListApps" basedir=".">
<description>
Script for listing installed apps.
Example run from:
/opt/IBM/SDP70/runtimes/base_v61/profiles/AppSrv01/bin
</description>
<property name="was_home"
value="/opt/IBM/SDP70/runtimes/base_v61/">
</property>
<path id="was.runtime">
<fileset dir="${was_home}/lib">
<include name="**/*.jar" />
</fileset>
<fileset dir="${was_home}/plugins">
<include name="**/*.jar" />
</fileset>
</path>
<property name="was_cp" value="${toString:was.runtime}"></property>
<property environment="env"></property>
<target name="wasListApps">
<taskdef name="wsListApp"
classname="com.ibm.websphere.ant.tasks.ListApplications"
classpath="${was_cp}">
</taskdef>
<wsListApp wasHome="${was_home}" />
</target>
</project>
Befehl:
./ws_ant.sh -buildfile ~/IBM/rationalsdp7.0/workspace/mywebappDeploy/applist.xml
Ein Bereitstellungsskript
<?xml version="1.0"?>
<project name="project" default="default" basedir=".">
<description>
Build/Deploy an EAR to WebSphere Application Server 6.1
</description>
<property name="was_home" value="/opt/IBM/SDP70/runtimes/base_v61/" />
<path id="was.runtime">
<fileset dir="${was_home}/lib">
<include name="**/*.jar" />
</fileset>
<fileset dir="${was_home}/plugins">
<include name="**/*.jar" />
</fileset>
</path>
<property name="was_cp" value="${toString:was.runtime}" />
<property environment="env" />
<property name="ear" value="${env.HOME}/IBM/rationalsdp7.0/workspace/mywebappDeploy/mywebappEAR.ear" />
<target name="default" depends="deployEar">
</target>
<target name="generateWar" depends="compileWarClasses">
<jar destfile="mywebapp.war">
<fileset dir="../mywebapp/WebContent">
</fileset>
</jar>
</target>
<target name="compileWarClasses">
<echo message="was_cp=${was_cp}" />
<javac srcdir="../mywebapp/src" destdir="../mywebapp/WebContent/WEB-INF/classes" classpath="${was_cp}">
</javac>
</target>
<target name="generateEar" depends="generateWar">
<mkdir dir="./earbin/META-INF"/>
<move file="mywebapp.war" todir="./earbin" />
<copy file="../mywebappEAR/META-INF/application.xml" todir="./earbin/META-INF" />
<jar destfile="${ear}">
<fileset dir="./earbin" />
</jar>
</target>
<!-- http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.javadoc.doc/public_html/api/com/ibm/websphere/ant/tasks/package-summary.html -->
<target name="deployEar" depends="generateEar">
<taskdef name="wsInstallApp" classname="com.ibm.websphere.ant.tasks.InstallApplication" classpath="${was_cp}"/>
<wsInstallApp ear="${ear}"
failonerror="true"
debug="true"
taskname=""
washome="${was_home}" />
</target>
</project>
Hinweise:
- Sie können dies nur einmal laufen! Sie können nicht installieren, wenn der App-Name verwendet wird - siehe andere Aufgaben wie wsUninstallApp
- Es wird wahrscheinlich nicht die App starten entweder
- Sie müssen dies auf dem Server ausgeführt werden und das Skript ist ziemlich zerbrechlich
Alternativen
würde ich wahrscheinlich Java Management Extensions verwenden (JMX). Sie könnten ein Datei-Upload-Servlet schreiben, das eine EAR akzeptiert und die Bereitstellungs-MBeans zum Bereitstellen der EAR auf dem Server verwendet. Sie würden einfach die Datei über HTTP POST. Dies würde jegliche WAS-API-Abhängigkeiten auf Ihrem Dev/Build-Rechner vermeiden und könnte unabhängig von einem einzelnen Projekt sein.
Zusätzliche Informationen und Proben hier: http://illegalargumentexception.blogspot.com/2008/08/ant-automated-deployment-to-websphere.html – McDowell
Die WAS Deployment JMX MBeans können nicht von einer Remote-JSE-App verwendet werden? (vorausgesetzt, libs auf dem Klassenpfad, natürlich) – bluefoot
@bluefoot Ich weiß es nicht/erinnere mich - Ich schrieb dies ~ 5 Jahren - aber ich nehme an, Sie müssten die Bytes auf den Server, um einen lokalen Pfad zu bieten die [AppManagement] (http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.javadoc.doc/public_html/mbeandocs/AppManagement.html) MBean sowieso. – McDowell