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の設定やデプロイ等が管理コンソール(ブラウザで開く)から行える。
|
|
|
|
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
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独自の設定を書くのが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 |
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]