S-JIS[2007-07-21/2008-12-01] 変更履歴

WebLogic Server

WebLogic(ウェブロジック)は、BEAシステムズJavaサーブレット コンテナJ2EEサーバーの実装)。
WebLogic Serverのことを略してWLSと書いたりする。
(BEAは2008年(WLS10.0〜10.3の頃)にOracleに買収されたので、WLSの名称は「BEA WebLogic Server」から「Oracle WebLogic Server」に変わった。[2008-09-21]

JDBCの設定やデプロイ等が管理コンソール(ブラウザで開く)から行える。


インストール

  1. ダウンロードサイトからアーカイブをダウンロードしてくる。
  2. アーカイブを実行するとインストーラーが立ち上がるので、指示にしたがって選択していく。

WebLogicの起動・停止

Windows版のWebLogicを起動すると、DOSプロンプトが起ち上がる。[2007-08-12]
WebLogicを終了させるには このDOS窓を閉じてもよいが、そうするとWebLogicが使用していたファイル類が掴まれっ放しになり、削除したりできなくなる。(WebLogicの再起動もできないかも)
正しく終了させるには、起動用バッチと同じ場所にある停止用バッチを実行する。

スタート→「プログラム(P)」→「BEA WebLogic Platform 8.1」→「User Projects」→「mydomain」→「Start Server」
C:\bea\user_projects\domains\mydomain\
startWebLogic.cmd
stopWebLogic.cmd


起動時のORA-24327

WebLogic8.1を久しぶりに起動したら、エラーが発生した。[2008-07-16]

####<2008/07/16 20時52分23秒 JST> <Warning> <JDBC> <マシン名> <myserver> <Main Thread> <<WLS Kernel>> <>
<BEA-001129> <プール "pool_name" の接続の作成中に例外を受け取りました。:
ORA-24327: ユーザーに認証を与える前に明示的に連結する必要があります。 - (userID/********@SID)>

以前はちゃんと動いていたのだが…。

試行錯誤した結果、Oracleのバージョンが悪かったらしい。
以前はOracle9iで動いていたのだが、同一マシンにOracle10g(のクライアント)もインストールしたのだった。
Oracle9iでもOracle10gでもtnsnames.oraは正常で、SQL*Plusはどちらのバージョンでも接続できるのに…。

環境変数PATHの中の「C:\oracle\ora92\bin」をOracle10gの設定より前に持って行ったら エラーが消えて動くようになった。


管理コンソール

WebLogicでは、ブラウザから管理コンソールを開いて色々設定できる。[2007-09-01]

http://localhost:7001/console

管理コンソールを使うには、WebLogicを起動しておく必要がある。
ログインする為にユーザーとパスワード(インストール時に設定したもの)が必要。


デプロイ

管理コンソールからデプロイを実行する代わりに、antでデプロイのタスクを実行することが出来る。[2007-09-01]

	<taskdef name="wldeploy"
	 classname="weblogic.ant.taskdefs.management.WLDeploy"
	 classpath="${WL_HOME}/server/lib/weblogic.jar" />

	<target name="deploy">
		<wldeploy action="deploy"
		 user="weblogic" password="password"
		 source="${ear.file}" adminurl="t3://localhost:7001" targets="myserver"
		 verbose="true" nowait="no"
		/>
	</target>

nowaitをyesにするとデプロイが終了するまでwldeployの実行が終わらないような気がするが、実際には待ってくれない。(デプロイが完了しなくても、デプロイ開始した時点でwldeployは終了する模様)


weblogic.xml

WebLogic独自の設定を書くのがweblogic.xml。web.xmlと同じ場所(WEB-INF直下)に置く。[2008-09-21]

WEB-INF/weblogic.xml:

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE weblogic-web-app >
<weblogic-web-app>

	<!--デプロイメント記述子の要素-->

</weblogic-web-app>
  DOCTYPE weblogic.xmlデプロイメント記述子の要素
WebLogic8.1 <!DOCTYPE weblogic-web-app PUBLIC
"-//BEA Systems, Inc.//DTD Web Application 8.1//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
WebLogic8.1
<!DOCTYPE weblogic-web-app PUBLIC
"-//BEA Systems, Inc.//DTD Web Application 8.1//EN"
"weblogic810-web-jar.dtd">
WebLogic9.0 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd WebLogic9.0(英語)
WebLogic9.2 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd WebLogic9.2
WebLogic10.0 http://www.bea.com/ns/weblogic/920/weblogic-web-app.xsd WebLogic10.0

JBossとの(一部)比較


開発者ライセンス数制限

WebLogicの開発ライセンスでは、接続できる人数の上限が決まっている。(IPアドレスで5個まで[2008-07-16]

この上限を超えて接続しようとすると、接続が拒否される(クライアント(ブラウザー)側でそういうエラーになる)。
このとき、WebLogicのコンソール(起動したウィンドウ)やC:\bea\user_projects\domains\mydomain\mydomain.logに、以下のようなエラーメッセージが出力される。 (WLS8.1)

####<2008/07/16 22時04分19秒 JST> <Notice> <WebLogicServer> <マシン名> <myserver> <ListenThread.Default> <<WLS Kernel>> <>
<BEA-000211> <接続が拒否されました。サーバ ライセンスではユニークな IP アドレス 5 からの接続のみが許可されています。>

これは「同時に接続できる最大数」ではなく、「WebLogicが起動してから累計で接続できる数」。
だから接続が拒否されたときに 誰かが接続するのをやめても意味はない。
WebLogicを再起動すると(再び新たに5人まで)接続できるようになる。


スレッド使用制限

WebLogic8.1では、アプリケーションでスレッド(Thread)を起こしてはいけないらしい。[2008-07-29]
→beaのWebLogic Web サービスの実装

WebLogic9.0のドキュメントではそのような記述は見つけられないが…9.0のWebサービスの内部実装は8.1とは全く異なっているらしいので、スレッドを使っても大丈夫になった?
とも思えないか。

WebLogic10.0では「独自のスレッドを作成するアプリケーションはあまり効率がよくありません」とあるだけなので、スレッドを作ること自体は構わないということだろうか。[2008-08-01]
→beaのトピックのスレッド化とクラスタ化

まぁでもWebLogic10ではEJBが扱いやすくなっているので、自前のスレッドよりはJMSのキューMDBを使うのがいいかも。[2008-08-05]


技術メモへ戻る
メールの送信先:ひしだま