- 以下の記述で
$WAS_HOME は、WebSphereアプリケーションサーバーを
インストールしたディレクトリー、$STRUTS_HOME は
Strutsのバイナリ配布版を展開したディレクトリーを指します。
- 3.5.2以前のWebSphereはJSP 1.1 と Servlet 2.2をサポートしていないため、
Strutsを動作させるためには非常に多くのコードの変更を必要とします。
ぜひStrutsを利用する前に3.5.2へのアップグレード(3.5にFixPack 2を適用する)を行ってください。
http://www.ibm.com/software/webservers/appserv/efix.html
のWebSphere 3.5 FixPack 2のダウンロード方法、インストール方法を参照してください。
- 注意: WebSphere 3.5.2でStrutsを動作させるためには一部修正が必要となります。
WebSphere 3.5.3 (このドキュメント記述時にはまだリリースされていません)
ではこの問題は修正されているはずです。
しかし、WebSphere 3.5.2 で Strutsを起動させることは可能です。
- WebSphere Application Serverが起動していることを確認します。
Windows NT/2000の場合、"IBM WS AdminServer" サービスがこれに該当します。
- WebSphere 管理コンソールを起動します。
- Administrative コンソールが起動したら、 "Convert a War File"を
ツールバー上のウィザードボタンのオプションまたはコンソール->タスクから選択します。
"Convert War File" ウィザードダイアログが表示されます。
- Warファイルを展開して生成したWebアプリケーションを動作させるサーブレットエンジン
(例. "Default Servlet Engine")をツリーコントロールを展開して選択し、"次へ"ボタンを押します。
- 登録するWebアプリケーションに関連付ける仮想ホスト(例. "default host")を選択し、
"次へ"ボタンを押します。
- "Browse"ボタンを押し、
$STRUTS_HOME/webapps/struts-example.warを選択して、
"次へ"ボタンを押します。
- 登録するWebアプリケーションリソースの対象ディレクトリ (例.
$WAS_HOME/hosts/default_host)
を選択し、"次へ"ボタンを押します。
- "Web Application Web Path" (例. struts-example)と "Web Application Name" (例. struts-example)
を入力し、"終了"ボタンを押します。
- ある程度待たされた後、「コマンド"warfile.convert"は正常に終了しました。」 と表示された情報ダイアログが
表示されるはずです。OKを押してください。
- JAXP 1.0.1からjaxp.jar とjaxpに互換性のあるパーサー(例. parser.jar)を
struts-example Webアプリケーションのサーブレットのディレクトリ
(例.
$WAS_HOME/AppServer/hosts/default_host/struts-example/servlets)に配置します。
- WAS 3.5.2 がServlet 2.2の仕様に完全に準拠していれば問題はないはずなのですが、
WAS 3.5.2 は
ServletContext.getResource(String) または、
ServletContext.getResourceAsStream(String)をコールするとnullをリターンします。
これはアプリケーションサーバーのstdoutログ(例. default_server_stdout.log.)内の
exceptionを見れば明らかです。
- 注意: 管理コンソールからのWebアプリケーションの起動が成功しても、それを鵜呑みにしないでください。
実際には正常に起動していません。管理コンソールは嘘をつきます。
Webアプリケーション(例.
http://localhost/struts-example/)にアクセスしても失敗します。
- Strutsのソースを修正する必要があります。
getResourceAsStream をコールしている
以下の3箇所を修正してください。
ResourceTag.doStartTag()
ActionServlet.initMapping()
PropertyMessageResources.loadLocale(String)
中でも ActionServlet が一番重要です。
// Acquire an input stream to our configuration resource
InputStream input = getServletContext().getResourceAsStream(config);
を以下のように変更します。
// Acquire an input stream to our configuration resource
InputStream input = new
java.io.FileInputStream(getServletContext().getRealPath(config));
- 必要があれば他のクラスにも同様の変更を行ってください。.
- ActionServletをリコンパイルし、
.class ファイルを
$WAS_HOME/AppServer/hosts/default_host/struts-example/servlets/
org/apache/struts/action/ActionServlet.class
にコピーします。
- WAS 3.5.2のクラスローダーには Class.getResource() が jar からリソースをロードできないというバグがあるため、
$STRUTS_HOME/lib/struts-config_1_0.dtd
を
$WAS_HOME/AppServer/hosts/default_host/struts-example/servlets/org/apache/struts/resources/struts-config_1_0.dtd
にコピーするか、インターネットに接続し、jakarta WEBサイトのDTDを参照できるようにしてください。
- 管理コンソール内のWebアプリケーションを起動します。
- ブラウザから次のURLをロードし、サンプルアプリケーションをテストします。
http://localhost/struts-example/
インストールへ戻る