2008-08-06 35 views
16

में तैनात ईएआर के लिए build.xml का उदाहरण मैं अपने प्रदाताओं को तर्कसंगत अनुप्रयोग विकास के बजाय एएनटी का उपयोग करने के लिए मनाने की कोशिश कर रहा हूं ताकि कोई भी समाधान किसी भी समय, किसी भी समय समाधान को दोबारा शुरू कर सकता है, पुनः जांच कर सकता है। : पीवेबस्पेयर 6

मैंने एक परियोजना के लिए build.xml शुरू किया जो एक जेएआर फ़ाइल उत्पन्न करता है लेकिन वहां रुक गया और मुझे नोटों की तुलना करने के लिए वास्तविक उदाहरणों की आवश्यकता है। मेरे प्यारे दोस्तों! मेरे पास इस बारे में चैट करने के करीब कोई नहीं है!

यह मेरा build.xml है।

(*) मैं अपने सवाल का suggestion में आधारित pastebin.ca

उत्तर

14

उपयोग करने के लिए मेरे पर्यावरण संपादित: फेडोरा 8; WAS 6.1 (जैसा कि तर्कसंगत अनुप्रयोग डेवलपर 7 के साथ स्थापित किया गया है)

प्रलेखन इस क्षेत्र में बहुत खराब है और व्यावहारिक उदाहरणों की कमी है।

WebSphere अनुप्रयोग सर्वर (था) चींटी कार्यों

का प्रयोग के रूप में यहाँ वर्णित चलाने के लिए आपको ws_ant.sh या ws_ant का उपयोग कर अपने सर्वर प्रोफ़ाइल बिन निर्देशिका से उन्हें चलाने के लिए की जरूरत है। बल्ले आदेश।

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

कमान:

./ws_ant.sh -buildfile ~/IBM/rationalsdp7.0/workspace/mywebappDeploy/applist.xml 

एक तैनाती स्क्रिप्ट

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

नोट्स:

  • आप केवल एक बार चला सकते हैं! अगर ऐप्लिकेशन का नाम उपयोग में है आप स्थापित कर सकते हैं नहीं - जैसे अन्य कार्यों को देखने के wsUninstallApp
  • यह शायद ऐप का
  • आप सर्वर पर इस चलाने की आवश्यकता शुरू नहीं होगी और स्क्रिप्ट काफी नाजुक है

वैकल्पिक

मैं शायद जावा प्रबंधन एक्सटेंशन (JMX) का प्रयोग करेंगे। आप एक फ़ाइल अपलोड अपलोडलेट लिख सकते हैं जो ईएआर स्वीकार करता है और सर्वर पर ईएआर को तैनात करने के लिए तैनाती एमबीन का उपयोग करता है। आप सिर्फ HTTP पर फ़ाइल पोस्ट करेंगे। यह आपके देव/निर्माण मशीन पर किसी भी WAS API निर्भरताओं से बच जाएगा और किसी भी एक परियोजना से स्वतंत्र हो सकता है।

+1

अतिरिक्त जानकारी और नमूने यहाँ: http://illegalargumentexception.blogspot.com/2008/08/ant-automated-deployment-to-websphere.html – McDowell

+0

तैनाती JMX था रिमोट जेएसई ऐप द्वारा एमबीन का उपयोग नहीं किया जा सकता है? (निश्चित रूप से कक्षापथ पर libs मानते हैं) – bluefoot

+0

@bluefoot मुझे नहीं पता/याद है - मैंने यह ~ 5 साल पहले लिखा था - लेकिन मुझे लगता है कि आपको स्थानीय पथ प्रदान करने के लिए सर्वर पर बाइट्स प्राप्त करने की आवश्यकता होगी [AppManagement] (http://pic.dhe.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.javadoc.doc/public_html/mbeandocs/AppManagement.html) एमबीन वैसे भी। – McDowell

4

एक अच्छा प्रारंभ बिंदु, यह maven pluggin हो सकता है, इसका उपयोग करने के लिए नहीं, या शायद हाँ, लेकिन यह मैवेन चींटी कार्य पर बना है। यदि आप देखते हैं WAS5 + प्लगइन + Mojo.zip \ src \ मुख्य \ लिपियों \ was5.build.xml

या के रूप में कहा, "मैकडोवेल", आप "चींटी कार्यों WebSphere अनुप्रयोग सर्वर (था)" का उपयोग कर सकते हैं, लेकिन सीधे चींटी के रूप में कार्य।

<path id="classpath"> 
    <fileset file="com.ibm.websphere.v61_6.1.100.ws_runtime.jar"/> 
</path> 

<taskdef name="wsStartApp" classname="com.ibm.websphere.ant.tasks.StartApplication" classpathref="classpath" /> 
<taskdef name="wsStopApp" classname="com.ibm.websphere.ant.tasks.StopApplication" classpathref="classpath" /> 
<taskdef name="wsInstallApp" classname="com.ibm.websphere.ant.tasks.InstallApplication" classpathref="classpath" /> 
<taskdef name="wsUninstallApp" classname="com.ibm.websphere.ant.tasks.UninstallApplication" classpathref="classpath" /> 

<target name="startWebApp1" depends="installEar"> 
    <wsStartApp wasHome="${wasHome.dir}" 
       application="${remoteAppName}" 
       server="${clusterServerName}" 
       conntype="${remoteProdConnType}" 
       host="${remoteProdHostName}" 
       port="${remoteProdPort}" 
       user="${remoteProdUserId}" 
       password="${remoteProdPassword}" /> 
</target> 

<target name="stopWebApp1" depends="prepare"> 
    <wsStopApp wasHome="${wasHome.dir}" 
       application="${remoteAppName}" 
       server="${clusterServerName}" 
       conntype="${remoteConnType}" 
       host="${remoteHostName}" 
       port="${remotePort}" 
       user="${remoteUserId}" 
       password="${remotePassword}"/> 
</target> 

<target name="uninstallEar" depends="stopWebApp1"> 
    <wsUninstallApp wasHome="${wasHome.dir}" 
        application="${remoteAppName}" 
        options="-cell uatNetwork -cluster DOL" 
        conntype="${remoteConnType}" 
        host="${remoteHostName}" 
        port="${remoteDmgrPort}" 
        user="${remoteUserId}" 
        password="${remotePassword}"/> 
</target> 

<target name="installEar" depends="prepare"> 
    <wsInstallApp ear="${existingEar.dir}/${existingEar}" 
        wasHome="${wasHome.dir}" 
        options="${install_app_options}" 
        conntype="${remoteConnType}" 
        host="${remoteHostName}" 
        port="${remoteDmgrPort}" 
        user="${remoteUserId}" 
        password="${remotePassword}" /> 
</target> 

एक और उपयोगी लिंक this हो सकता है।

0

यदि आप सिर्फ चारों ओर खेलना चाहते हैं तो नेट कान आईडी आईडी का उपयोग अपनी कान फ़ाइलों को उत्पन्न करने के लिए क्यों नहीं करें। यदि आप एक एंटरप्राइज़ प्रोजेक्ट बनाते हैं तो यह स्वचालित रूप से आपके लिए चींटी फाइलें उत्पन्न करेगा। प्रोटोटाइप के लिए अच्छा है और बस शुरू करना :-)

यहां तक ​​कि एक प्लगइन भी है जो स्वचालित तैनाती की अनुमति देता है हालांकि यह बहुत ही कमजोर लगता है!

6

यदि आपके पास WAS चींटी कार्य उपलब्ध नहीं हैं या was_ant.bat नहीं चलाना चाहते हैं तो यहां कुछ समान कार्यक्षमता दी गई है। यह पथ में मौजूद wsadmin.bat पर निर्भर करता है।

<property name="websphere.home.dir" value="${env.WS6_HOME}" /> 
<property name="was.server.name" value="server1" /> 
<property name="wsadmin.base.command" value="wsadmin.bat" /> 

<property name="ws.list.command" value="$AdminApp list" /> 
<property name="ws.install.command" value="$AdminApp install" /> 
<property name="ws.uninstall.command" value="$AdminApp uninstall" /> 
<property name="ws.save.command" value="$AdminConfig save" /> 
<property name="ws.setManager.command" value="set appManager [$AdminControl queryNames cell=${env.COMPUTERNAME}Node01Cell,node=${env.COMPUTERNAME}Node01,type=ApplicationManager,process=${was.server.name},*]" /> 
<property name="ws.startapp.command" value="$AdminControl invoke $appManager startApplication" /> 
<property name="ws.stopapp.command" value="$AdminControl invoke $appManager stopApplication" /> 

<property name="ws.conn.type" value="SOAP" /> 
<property name="ws.host.name" value="localhost" /> 
<property name="ws.port.name" value="8880" /> 
<property name="ws.user.name" value="username" /> 
<property name="ws.password.name" value="password" /> 

<property name="app.deployed.name" value="${artifact.filename}" /> 
<property name="app.contextroot.name" value="/${artifact.filename}" /> 

<target name="websphere-list-applications"> 
    <exec dir="${websphere.home.dir}/bin" executable="${wsadmin.base.command}" output="waslist.txt" logError="true"> 
     <arg line="-conntype ${ws.conn.type}" /> 
     <arg line="-host ${ws.host.name}" /> 
     <arg line="-port ${ws.port.name}" /> 
     <arg line="-username ${ws.user.name}" /> 
     <arg line="-password ${ws.password.name}" /> 
     <arg line="-c" /> 
     <arg value="${ws.list.command}" /> 
    </exec> 
</target> 

<target name="websphere-install-application" depends="websphere-uninstall-application"> 
    <exec executable="${websphere.home.dir}/bin/${wsadmin.base.command}" logError="true" outputproperty="websphere.install.output" failonerror="true"> 
     <arg line="-conntype ${ws.conn.type}" /> 
     <arg line="-host ${ws.host.name}" /> 
     <arg line="-port ${ws.port.name}" /> 
     <arg line="-username ${ws.user.name}" /> 
     <arg line="-password ${ws.password.name}" /> 
     <arg line="-c" /> 
     <arg value="${ws.install.command} ${dist.dir}/${artifact.filename}.war {-appname ${app.deployed.name} -server ${was.server.name} -contextroot ${app.contextroot.name}}" /> 
     <arg line="-c" /> 
     <arg value="${ws.save.command}" /> 
     <arg line="-c" /> 
     <arg value="${ws.setManager.command}" /> 
     <arg line="-c" /> 
     <arg value="${ws.startapp.command} ${app.deployed.name}" /> 
     <arg line="-c" /> 
     <arg value="${ws.save.command}" /> 
    </exec> 
    <echo message="${websphere.install.output}" /> 
</target> 

<target name="websphere-uninstall-application"> 
    <exec executable="${websphere.home.dir}/bin/${wsadmin.base.command}" logError="true" outputproperty="websphere.uninstall.output" failonerror="false"> 
     <arg line="-conntype ${ws.conn.type}" /> 
     <arg line="-host ${ws.host.name}" /> 
     <arg line="-port ${ws.port.name}" /> 
     <arg line="-username ${ws.user.name}" /> 
     <arg line="-password ${ws.password.name}" /> 
     <arg line="-c" /> 
     <arg value="${ws.setManager.command}" /> 
     <arg line="-c" /> 
     <arg value="${ws.stopapp.command} ${app.deployed.name}" /> 
     <arg line="-c" /> 
     <arg value="${ws.save.command}" /> 
     <arg line="-c" /> 
     <arg value="${ws.uninstall.command} ${app.deployed.name}" /> 
     <arg line="-c" /> 
     <arg value="${ws.save.command}" /> 
    </exec> 
    <echo message="${websphere.uninstall.output}" /> 
</target>