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 sys
とfrom apputil.applist import getAppList
を呼び出したことsys.path.append(sys.argv[5])
です。その後、私のスクリプトはインポートから適切に参照され、すべて問題ありません。私の好みは、この依存関係を排除し、Ant タスクが目的のパス要素の挿入を処理することです。私はこれを達成するのに運がありませんでした。
私が明確であり、コミュニティがいくつかの斬新な提案、または少なくともこれが機能しないように見える理由についての説明を提供してくれることを願っています. ありがとう。