2

Oracle 10 から論理的かつ非対話的にアプリケーションをアンデプロイする必要があります。私が思いついた解決策は、WLST を使用し、Python プログラムを作成して作業を行うことです。sys.path私が抱えている問題は、スクリプトの外で操作することです。

Weblogic のカスタム Ant タスクを使用してスクリプトを呼び出し、属性WLSTTaskを介して特定の引数をスクリプトに渡しています。arguments次のようになります。

<target name="undeploy-oldest">
    <wlsttask
      debug="true"
      fileName="${basedir}/resources/script/py/undeployOldestApp.py"
      arguments="dmi ${user} ${password} ${url} ${basedir}/resources/script/py/" />
</target>

そしてスクリプト自体。

import sys
from apputil.applist import getAppList
from apputil.apputility import getOldestAppVersion
from wlstModule import connect, disconnect, undeploy

appName = sys.argv[1]
username = sys.argv[2]
password = sys.argv[3]
url = sys.argv[4]

connect(username, password, url)
serverAppList = getAppList()
versionToUndeploy = getOldestAppVersion(appName, serverAppList)
if (versionToUndeploy != -1):
    undeploy(versionToUndeploy)
    print "Undeployed " + versionToUndeploy
else:
    print "Nothing to undeploy"
disconnect()

私が抱えている問題は、Ant タスクの引数リストの最後の引数に関係しています。私は、Jython が現在の作業ディレクトリをsys.path自動的に追加するという印象を受けました。ただし、「。」のエントリが表示されますが。でsys.path、カスタムapputilモジュールからのインポートが機能しません。これは、Ant が実際に実行されている場所と「.」に関係していると思われます。存在するディレクトリを表していませんundeployOldestApp.py。タグ内のクラスパス タグを使用して、Ant クラスパスへのパスを追加しようとしましたが、そのパスが Jython のリストWLSTTaskに追加されませんでした。sys.path

これまでの私の唯一の成功は、Ant タスクの最後の引数で、その間にimport sysfrom apputil.applist import getAppListを呼び出したことsys.path.append(sys.argv[5])です。その後、私のスクリプトはインポートから適切に参照され、すべて問題ありません。私の好みは、この依存関係を排除し、Ant タスクが目的のパス要素の挿入を処理することです。私はこれを達成するのに運がありませんでした。

私が明確であり、コミュニティがいくつかの斬新な提案、または少なくともこれが機能しないように見える理由についての説明を提供してくれることを願っています. ありがとう。

4

1 に答える 1

0

おそらく、executeScriptBeforeFile="true" パラメーターを使用して、

<script>
    sys.path.append(...)
</script>

または、Java からタスクを実行してみてください。

<java classname="weblogic.WLST" fork="true">
    <arg line="${basedir}/resources/script/py/undeployOldestApp.py dmi ${user} ${password} ${url} ${basedir}/resources/script/py/"/>
    <classpath refid="class.path"/>
</java>

これにより、wlsttask では使用できない Java タスクの一部のパラメーターにアクセスできる場合があります。

于 2011-09-26T09:29:38.337 に答える