一歩先に進むためのWLST活用技法

1,730 views
1,494 views

Published on

2013年7月23日第38回WebLogic Server勉強会でのセッション資料。Jython(Python)言語機能の活用、再利用を可能にするための機能、オフラインモードの活用、WLST Tipsを解説。

伊藤忠テクノソリューションズ株式会社
ソフトウェアサービス本部 ミドルウェアサポート部
山田 貴裕氏

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,730
On SlideShare
0
From Embeds
0
Number of Embeds
37
Actions
Shares
0
Downloads
38
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

一歩先に進むためのWLST活用技法

  1. 1. Copyright (c)2013 ITOCHU Techno-Solutions Corporation WebLogic Server勉強会@東京 LT 一歩先に進むためのWLST活用技法 ソフトウェアサービス本部 ミドルウェアサポート部 山田 貴裕 2013/7/23
  2. 2. Copyright (c)2013 ITOCHU Techno-Solutions Corporation はじめに • 発表する内容は個人の見解であり、所属する組織の公式な見解 ではありません。 • この内容の前に「WLST入門」などを参照することをお薦めします。 – http://www.slideshare.net/OracleMiddleJP/wlst • 基本的にWebLogic Server(WLS)のバージョンには依存しません。 – WLS 9.x ~ WLS 12c 2
  3. 3. Copyright (c)2013 ITOCHU Techno-Solutions Corporation アジェンダ • Jython(Python)言語機能の活用 • 再利用を可能にするための機能 • オフラインモードの活用 • WLST Tips 3
  4. 4. Copyright (c)2013 ITOCHU Techno-Solutions Corporation アジェンダ • Jython(Python)言語機能の活用 • 再利用を可能にするための機能 • オフラインモードの活用 • WLST Tips 4
  5. 5. Copyright (c)2013 ITOCHU Techno-Solutions Corporation WLSTで利用できるJython(Python)バージョン • WLS 11g(10.3.1)以降は「2.2.1」 – WLS 10gR3(10.3)以前は「2.1」 • かなり古いので利用できない機能に注意 – 例: 2.1 ではTrue/False が定義されていない → 代わりに、WLST で定義されている true/false を使う 5 wls:/> import sys wls:/> sys.version '2.2.1' wls:/> sys.version_info (2, 2, 1, 'final', 0)
  6. 6. Copyright (c)2013 ITOCHU Techno-Solutions Corporation Jython(Python)の組み込み関数の利用 - dir • dir – 現在のスコープにある名前のリストを返す • 既存で何が定義されているか確認できる – オブジェクトの属性をリストとして返す • フィールドやメソッドを簡易に確認できる 6 wls:/> dir() ['ADVANCED', 'ALL', 'AbstractMethodError', 'AccessorServletClient', : 'writeDomain', 'writeIniFile', 'writeTemplate', 'wsee', 'wtc', 'xml'] wls:/> dir(Integer) ['MAX_VALUE', 'MIN_VALUE', 'SIZE', 'TYPE', 'bitCount', 'compare', : 'toBinaryString', 'toHexString', 'toOctalString', 'toString', 'valueOf']
  7. 7. Copyright (c)2013 ITOCHU Techno-Solutions Corporation Jython(Python)の組み込み関数の利用 – type, raw_input • type – オブジェクトの型を調べる • raw_input – ユーザからの入力を取得する 7 wls:/> x = 'foo' wls:/> type(x) <type 'str'> wls:/> type(Integer) <type 'javaclass'> wls:/> s = raw_input('--> ') --> WebLogic Server wls:/> s 'WebLogic Server'
  8. 8. Copyright (c)2013 ITOCHU Techno-Solutions Corporation 参考: lambdaおよびリスト内包表記の利用 以下のようなリストを事前定義 • 例: 2倍にしたリストを返す – map関数の利用 – リスト内包表記 (結果は同じ) • 例: 偶数のみ取り出す – filter関数の利用 – リスト内包表記 (結果は同じ) 8 wls:/> filter((lambda x: x % 2 == 0), a) [2, 4] wls:/> map((lambda x: x * 2), a) [2, 4, 6, 8, 10] wls:/> [x * 2 for x in a] wls:/> [x for x in a if x % 2 == 0] wls:/> a = [1, 2, 3, 4, 5]
  9. 9. Copyright (c)2013 ITOCHU Techno-Solutions Corporation アジェンダ • Jython(Python)言語機能の活用 • 再利用を可能にするための機能 • オフラインモードの活用 • WLST Tips 9
  10. 10. Copyright (c)2013 ITOCHU Techno-Solutions Corporation 共通モジュール・ライブラリの配置 (1) • WLSTで共通で利用できるモジュールの作成 – <WL_HOME>/common/wlst に配置 (sample.py) – WLSTからは以下のように実行 ※「execfile('sample.py')」 と同様の動きになる 10 def hello(message): return 'Hello ' + message wls:/> hello('WebLogic') 'Hello WebLogic'
  11. 11. Copyright (c)2013 ITOCHU Techno-Solutions Corporation 共通モジュール・ライブラリの配置 (2) • WLSTで共通で利用できるライブラリの作成 – <WL_HOME>/common/wlst/lib に配置 (samplelib.py) – WLSTからは以下のように実行 ※「import samplelib」と同様の動きになる →コンパイルされ、samplelib$py.classができる 11 def hello(message): return 'Hello ' + message wls:/> samplelib.hello('WebLogic') 'Hello WebLogic'
  12. 12. Copyright (c)2013 ITOCHU Techno-Solutions Corporation 共通モジュール・ライブラリの配置 (3) • JythonモジュールとしてのWLSTのインポート – 上記は、<WL_HOME>/common/wlst/modules/wlstModule.py を参照 – writeIniFile('wl.py') のようにして「from wl import *」するのもあり 12 from wlstModule import * def getUsedHeapMB(): jvm = getMBean('/JVMRuntime/' + get('Name')) usedHeap = jvm.getHeapSizeCurrent() - jvm.getHeapFreeCurrent() return usedHeap / 1024 / 1024 WLST独自の機能をインポート import samplemod connect('weblogic','welcome1') serverRuntime() print samplemod.getUsedHeapMB() (samplemod.py)
  13. 13. Copyright (c)2013 ITOCHU Techno-Solutions Corporation 設定ファイルの読み込み - loadProperties • loadProperties – WLSTで定義され、起動オプションとしても利用可能 (sample.properties) – WLSTからは以下のように実行 – 起動オプションでの指定方法 java weblogic.WLST -loadProperties sample.properties (XXX.py) 13 wls:/> loadProperties('sample.properties') wls:/> foo 'Hello' wls:/> bar '1' foo=Hello bar=1 Javaのプロパティファイルと同様に 「<キー>=<値>」形式で指定 文字列として変数に反映
  14. 14. Copyright (c)2013 ITOCHU Techno-Solutions Corporation 設定ファイルの読み込み - execfile • execfile – 設定ファイルをJythonスクリプトとしてロードする (sample.py) – WLSTからは以下のように実行 14 foo = 'Hello' bar = 1 baz = ['a', 'b', 'c', 'd', 'e'] quz = {'one' : 1, 'two' : 2} wls:/> execfile('sample.py') wls:/> foo 'Hello' wls:/> bar 1 wls:/> baz[0] 'a' wls:/> quz['one'] 1 Jythonの型をそのまま利用可能 柔軟な設定が可能ではあるが、 設定以外も書けてしまうので、安全ではない
  15. 15. Copyright (c)2013 ITOCHU Techno-Solutions Corporation 設定ファイルの読み込み - ConfigParser • ConfigParser – Jython(Python)で定義され、WindowsのINIファイル形式を読み込む (sample.ini) – WLSTからは以下のように実行 15 [section1] foo=Hello bar=1 wls:/> import ConfigParser wls:/> config = ConfigParser.ConfigParser() wls:/> config.read('sample.ini') wls:/> config.get('section1', 'foo') 'Hello' wls:/> config.getint('section1', 'bar') 1 ある程度柔軟な取得が可能 セクションと、それに続けて「<キー>=<値>」形式で指定
  16. 16. Copyright (c)2013 ITOCHU Techno-Solutions Corporation アジェンダ • Jython(Python)言語機能の活用 • 再利用を可能にするための機能 • オフラインモードの活用 • WLST Tips 16
  17. 17. Copyright (c)2013 ITOCHU Techno-Solutions Corporation ドメインテンプレート⇔ドメインの構成 17 テンプレートJAR ドメイン config メモリ上の ドメイン オブジェクト readTemplate/ addTemplate writeDomain/ updateDomain writeTemplate readDomain 標準テンプレートの場所は • <WL_HOME>/common/templates/domains (~ WLS12.1.1) • <WL_HOME>/common/templates/wls (WLS12.1.2) 読み込んだ情報の破棄 closeTemplate closeDomain
  18. 18. Copyright (c)2013 ITOCHU Techno-Solutions Corporation 例: ドメイン作成スクリプト 18 mwHome="/opt/oracle/middleware/wls1212" wlHome=mwHome + "/wlserver" readTemplate(wlHome + "/common/templates/wls/wls.jar") setOption('ServerStartMode', 'prod') cd('/Servers/AdminServer') set('ListenAddress', 'localhost') set('ListenPort', 7001) cd('/Security/base_domain/User/weblogic') cmo.setPassword('welcome1') writeDomain(mwHome + '/user_projects/domains/mydomain') closeTemplate() exit() メモリ上のドメイン オブジェクトの操作
  19. 19. Copyright (c)2013 ITOCHU Techno-Solutions Corporation 例: オフラインモードを活用したドメインサマリーの作成 • WLST Offline Script to Create Summary of WebLogic Domain – http://orablogs-jp.blogspot.jp/2013/05/get-offline-or-online-weblogic- domain.html 19
  20. 20. Copyright (c)2013 ITOCHU Techno-Solutions Corporation アジェンダ • Jython(Python)言語機能の活用 • 再利用を可能にするための機能 • オフラインモードの活用 • WLST Tips 20
  21. 21. Copyright (c)2013 ITOCHU Techno-Solutions Corporation Tips - easeSyntax • easeSyntax – ls や cd など一部コマンドで、() や引用符を使わずに済む – 対話モードで利用可能 – 非サポートなので、開発時などに利用 21 wls:/> cd('/Servers/AdminServer') wls:/> pwd() 'serverConfig:/Servers/AdminServer' wls:/> easeSyntax() wls:/> cd /Servers/AdminServer wls:/> pwd 'serverConfig:/Servers/AdminServer' (通常) (easeSyntax利用) ↓
  22. 22. Copyright (c)2013 ITOCHU Techno-Solutions Corporation Tips - skipWLSModuleScanning • -skipWLSModuleScanning – WLSTは初回起動時にパッケージのスキャンとキャッシュを行うが、この 部分をスキップして、起動時間を(多少)短縮できる 22 $ java weblogic.WLST WebLogic Scripting Tool(WLST)を初期化しています... Jythonは、最初の起動時に見つかったすべてのjarファイルをスキャンします。システムによっては、 このプロセスの完了には数分かかることがあり、WLSTがプロンプトをすぐに戻さない場合があります。 WebLogic Server Administration Scripting Shellへようこそ 使用可能なコマンドに関するヘルプを表示するには、help()と入力してください wls:/offline> java weblogic.WLST -skipWLSModuleScanning とすることで、この部分の処理をスキップ
  23. 23. Copyright (c)2013 ITOCHU Techno-Solutions Corporation Tips - storeUserConfig • storeUserConfig – 暗号化されたユーザー名・パスワードを保存し、connect() 時に利用 – パスワードをスクリプトや設定ファイルなどに直書きしないで済む 23 wls:/> connect('weblogic', 'welcome1') wls:/> storeUserConfig('userConfig.properties', 'userKey.secure') wls:/> connect(userConfigFile='userConfig.properties', userKeyFile='userKey.secure') 一旦接続しておき、ユーザー構成ファイルとキー・ファイルを保存 保存されたユーザー構成ファイルとキー・ファイルを利用し、接続
  24. 24. Copyright (c)2013 ITOCHU Techno-Solutions Corporation WLSTスクリプトの開発 • 通常のエディタでも可 • OEPE(Oracle Enterprise Pack for Eclipse)が便利 – 機能 • シンタックスハイライト • スクリプトテンプレート • コード補完 • MBeanナビゲーター • スクリプト実行 • WLSTヘルプ – 使い方 • Dynamic Web Projectなどを作成し、WLSのランタイムを関連付け、 Project Facetsに「Oracle WebLogic Scripting Tools (WLST) Support 」を追加 • その他詳細は「OEPE WLST」などで検索… 24
  25. 25. Copyright (c)2013 ITOCHU Techno-Solutions Corporation まとめ • 以下の機能をうまく使い分け – Jython(Python)の言語/ライブラリ • http://docs.python.jp/2/ などを参照 – Java言語/ライブラリ • http://docs.oracle.com/javase/jp/7/api/ などを参照 – WLSTの独自機能 • WLSTのマニュアルやhelp()機能を参照 http://docs.oracle.com/cd/E28613_01/web.1211/b65931/toc.htm http://docs.oracle.com/cd/E28613_01/web.1211/b65932/toc.htm → 効率よく開発し、再利用性・保守性の高いスクリプト開発を 25
  26. 26. Copyright (c)2013 ITOCHU Techno-Solutions Corporation

×