仅当使用ant wldeploy任务时,才在weblogic中部署应用程序

时间:2011-02-03 10:01:55

标签: ant weblogic

  • 如果使用wldeploy ant任务在weblogic中不存在应用程序,我怎样才能部署应用程序
  • 当我运行ant testapp时,就我在控制台消息中所见(即在sysout中),它每次都会在现有应用程序上进行部署。
  • 我把这个ant目标称为其他目标中的依赖项,我希望只有在weblogic服务器中不存在app时才能运行(为了提高效率)

<target name="testapp" depends="init-wls"> <wldeploy action="deploy" verbose="true" debug="true" name="testapp" failonerror="false" ... source="testapp.war"/> </target>

1 个答案:

答案 0 :(得分:3)

一个有趣的问题。我不确定wldeploy能否做你想做的事。一种可能有效的方法是使用wlconfig ant任务。您可以使用它来获取ApplicationRuntimeMBeans,然后查询其ApplicationName属性(再次使用wlconfig任务)以查看是否已部署应用程序。不是非常简单,但至少你会避免重新部署应用程序。

这只是我头脑中的一个简单的想法,所以不确定它是否在实践中可行,对不起.... :)

- 编辑:尝试过,这样的事情应该有效,这里的假设是,如果我们可以找到MBean,那么它已经部署,这应该是一个有效的假设,因为这些bean住在AppDeployments下:

<project name="test" default="deploy">
     <property name="domainName" value="ejbTestDomain"/>
     <property name="serverName" value="AdminServer"/>
     <property name="appName" value="ejbWebEAR"/>
     <target name="findApp">
              <wlconfig url="t3://localhost:7001" username="weblogic" password="password_for_weblogic">
                       <query pattern="${domainName}:ServerRuntime=${serverName},Name=${appName},*,Type=ApplicationRuntime" property="app.is.deployed"/>
              </wlconfig>
     </target>
     <target name="deploy" unless="app.is.deployed" depends="findApp">
              <echo message="Deploying..."/>
              <!-- deploy using wldeploy task -->
     </target>
</project>