カテゴリー「WebObjects」の記事

WebObjects:CSVレスポンスの実装

Webアプリケーションにおいて,データベースの内容をCSVデータにしてユーザにダウンロードさせたい場合があるかと思います。ここではWebObjectsの環境で作成するWebアプリでの実装例として,ボタンクリックに対するWebブラウザへのレスポンスをCSVデータとすることで,WebブラウザでCSVデータをダウンロードさせる実装例を示します。

【処理の概要】
WebObjectsのアクションメソッドの戻り値としてコンポーネントクラスのインスタンスを返すと,WebObjectsがそのクラスのappendToResponseメソッドを呼び出してWebブラウザへのレスポンスを作成します。この仕組みを使ってCSVデータを返すために,CSVデータを返すためのコンポーネントクラスを作り,メンバ変数にCSVデータセットしてappendToResponseメソッドが呼ばれればCSVレスポンスが作られるようにします。

【実装手順】
1)コンポーネントの作成
CSVデータを返すコンポーネントを作成します。
これは通常のHTMLを返すコンポーネントの新規作成と同じで,開発環境Xcodeの「新規ファイル」ダイアログから「WebObjects」→「Component」を選んで「次へ」ボタンで進み,ターゲットを「Application Server」にしてファイル名にコンポーネント名を入力して完了ボタンで作成を実行します。
ここでは仮に,コンポーネント名を「CSVExport」と指定することにします。

2)CSVデータを保持するメンバ変数と初期化メソッドの作成
CSVExport.javaにて,CSVデータとファイル名を保持するメンバ変数と,これに値を設定する初期化メソッドを実装します。

private String mFileName;
private String mCSVData;

public void init (
  String fileName,
  String csvData)
{
  mFileName = fileName;
  mCSVData = csvData;
}

3)appendToResponseのオーバーライド
CSVExport.javaにて「appendToResponse」メソッドを定義すると,Application.javaやSession.javaで定義したappendToResponseメソッドがオーバーライドされます。CSVデータを返す場合のappendToResponseメソッドは以下のようになります。このメソッドでは,出力するCSVファイルをExcelで開くことができるように,文字コードを「Windows-31J/MS932」に指定しています。
public void appendToResponse (
  WOResponse res,
  WOContext cont)
{
  res.setContextEncoding("MS932");
  super.appendToResponse(res, cont);
  if (mFileName != null && mCSVData != null) {
    res.setHeader("public", "Cache-Control");
    res.setHeader("public", "Pragma");
    res.setHeader("text/csv;charset=Windows-31J", "Content-Type");
    res.setHeader("attachment;filename=\""+mFileName+".csv\"", "Content-Disposition");
    res.setHeader(new Long(mCSVData.length()).toString(), "Content-Length");
    res.setContent(mCSVData);
    res.setStatus(res.HTTP_STATUS_OK);
  }
}

上記コードのうち,
res.setHeader("public", "Cache-Control");
res.setHeader("public", "Pragma");
IEのダウンロード問題に対処したものです。
以上でCSVExportコンポーネントの実装は完了です。

4)アクションメソッドからの呼び出し
Webアプリ上でボタンを押すと,CSVExportコンポーネントによりCSVファイルがダウンロードされるようにします。
WebアプリのCSVダウンロードボタンを配置したページのコンポーネントクラスにおいて,ボタンを押したときに呼ばれるアクションメソッドを用意して,その戻り値としてCSVExportクラスインスタンスを返すようにします。アクションメソッドは以下のようになります。
public CSVExport exportAction ()
{
  CSVExport nextPage = null;
  String fileName = buildFileName(); // ファイル名生成.
  String csvData = buildCSVData();  // CSVデータ生成.
  if (csvData != null && 0 < csvData.length()) {
    nextPage = (CSVExport)pageWithName("CSVExport");
    nextPage.init(fileName, csvData);
  }
  return nextPage;
}
このアクションメソッドをWebページのWOSubmitButtonなどにバインドすることにより,ユーザのボタン押下でCSVデータをWebブラウザからダウンロードすることができます。

5)CSVデータ生成メソッドの実装の概要
CSVデータの作成についてはJavaの「StringBuffer」クラスで組み立てるのが一般的かと思います。
CSVのデータフォーマットの仕様についてはRFC4180日本語訳)を参照してください。
この実装方法で巨大なCSVファイルを扱う場合,最後にtoStringメソッドでStringインスタンスを生成するときに,文字列データに必要なメモリサイズが倍になってしまうので,メモリ不足に注意しましょう。WebObjectsのメモリ不足対策はこちら
private String buildCSVData ()
{
  StringBuffer buff = new StringBuffer();
  buff.append("カラム1-1");
  buff.append(",");    // カンマ挿入.
  buff.append("\"");    // ダブルクォーテーション(二重引用符)挿入.
  buff.append("カラム1-2");
  buff.append("\"");
  buff.append("\r\n");   // 改行(CRLF)挿入.
  buff.append("カラム2-1");
  buff.append(",");
  buff.append("\"");
  buff.append("カラム2-2");
  buff.append("\"");
  buff.append("\r\n");

  return buff.toString();
}

※CSVの「数値/数値」をExcelで日付にしないために
ここで実装したしたCSVレスポンスのデータをユーザがダウンロードしてExcelで開いて閲覧・編集する場合,フィールドデータの形式が「数値/数値」または「数値-数値」で,数値が日付として解釈できる範囲内の場合,Excelはこれを勝手に日付データとして取り込んでしまいます。
これに対する対処法として,CSVレスポンスデータを組み立てるときにフィールドデータの先頭に半角スペースを入れる,というのが最も手っ取り早い対処法かと思います。先頭に半角スペースを入れた「 数値/数値」のデータをExcelに読み込ませると,Excelはこのデータの先頭の半角スペースを削除して日付ではなく文字列としてデータを取り込みます。
参考:Excel で文字列または数値が意図しない表示形式に変換される(Microsoftサポートオンライン)

※上記コードでは,整形のため全角スペースを使用している部分があります。
【著作権表記】上記コードを含む本ブログのプログラムコードは,私的利用可,商用利用可,改変しての利用可です。利用の際に作者に許諾を得る必要はありません。

■関連情報
CSVの仕様:RFC4180日本語訳
Java:Shift_JISのエイリアスの変更について
Microsoftサポートオンライン:IEのダウンロードの問題
Java:CSVパーサを作る[その1][その2][その3]
WebObjects:[API Reference(javadoc)][ADC Tools][サポート]

■関連書籍をAmazonで検索:[WebObjects 和書 洋書]
コーディングの掟 現場でよく見る不可解なJavaコードを一掃せよ!

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ プログラム・プログラマへ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。

| | トラックバック (0)

WebObjects:メモリ不足エラー対応

【問題】
WebObjectsで開発したWebアプリケーションが稼動中にメモリ不足でメモリ割り当てできなくなったとき,OutOfMemoryError例外が発生します。

【対応策】
WebObjectsで開発するWebアプリはJavaアプリケーションなので,対応策は基本的にJavaアプリケーションと同じです。

割り当てメモリと残メモリの調査
Webアプリケーションには,起動時にJava VMからヒープメモリが割り当てられます。Webアプリケーションは,実メモリサイズにかかわりなく割当メモリサイズ以上のメモリを使用することはできません。そのため,まずはWebアプリケーションがJavaVMから十分なサイズのメモリを割り当てられているかを確認しておく必要があります。
割り当てられたヒープメモリのサイズは以下のコードで調べることができます。このコードはたとえばmainメソッドの先頭に埋め込むと良いでしょう。

割り当てメモリサイズを表示するJavaプログラムコード
long total = Runtime.getRuntime().totalMemory();
System.out.println("Total Memory = " + Long.toString(total) + "bytes");

特定の時点での残りのヒープメモリは以下のコードで調べることができます。
このコードでは回収できるメモリはできるだけ回収してから残メモリサイズをカウントするため,事前にgcを呼ぶようにしています。
このコードはOutOfMemoryError例外が発生する処理を行う直前の残メモリを調べるときなどに使えるでしょう。
残メモリサイズを表示するJavaプログラムコード
Runtime.getRuntime().gc();
long free = Runtime.getRuntime().freeMemory();
System.out.println("Free Memory = " + Long.toString(free) + "bytes");
※メモリ不足エラーが起きたときは,原因がメモリリークではないかを十分に確認してください。Java VMは参照されなくなったメモリを自動的に回収してくれますが,参照されたままのメモリは回収してくれません。

Javaでの割り当てメモリ拡張方法
Javaアプリケーションのメモリ不足に対する最も手っ取り早い対処方法が,アプリケーション割り当てメモリを増やすことです。
Javaでは,アプリを起動するjavaコマンド([Win版][Solaris版])へのオプション指定で割り当てメモリのサイズを指定することができます。

指定できるオプション指定:
-Xmxサイズ値:割り当てメモリの最大値を指定
-Xmsサイズ値:割り当てメモリの初期値を指定

サイズ値は,-Xmxは2MBより大きい1024の倍数,-Xmsは1MBより大きい1024の倍数でなければなりません。
各サイズ値にキロバイトを指定する場合はkまたはK,メガバイトを指定する場合はmまたはMを付けます。

-Xmxで指定できる値の上限は,OS環境やJavaVMのバージョンにより異なるようです。-Xmxに上限を超える値を指定した場合は「Could not reserve enough space for object heap」というエラーメッセージが返ります。

コマンドラインから起動する場合のオプション指定例:最大値128MB,初期値64MB,起動クラス:EntryClass
java -Xmx128m -Xms64m EntryClass

WebObjectsでメモリサイズを指定するには?

オプション「-Xmxサイズ値」及び「-Xmsサイズ値」をWebObjectsで運用するWebアプリに適用するには以下のようにします。

運用環境で,すでに実稼動しているWebアプリに設定する。
JavaMonitorで以下の設定を行います。
1.JavaMonitorを起動し,Applicationsタブの画面から設定するアプリケーションの「Config」ボタンを押します。
2.「Configuring Application "アプリケーション名"」の画面が表示され,「New Instance Defaults」が開いている状態になります。
3.「New Instance Defaults」の「Additional Arguments:」テキストボックスにオプション「-Xmxサイズ値 -Xmsサイズ値」を入力(追記)して「Push」「Update for New Instances Only」ボタンを押します。
4.アプリケーションのDetail View画面に移動し,アプリケーションを再起動します。

開発版(動作確認用)に設定する。
1.Xcodeにて,プロジェクト名のターゲットをダブルクリックで開きます。
2.「設定」ポップアップで「Development」を選びます。
3.ウインドウの左側リストから「設定」→「シンプルビュー」→「詳細設定ビュー」を開きます。
4.「ビルド設定」が開くので,この中の「JVM_OPTIONS」に「-Xmxサイズ値 -Xmsサイズ値」を入力(追記)します。
5.ウインドウを閉じ,ターゲットをクリーニングしてビルドします。

開発環境でビルドする運用版に設定する。
1.Xcodeにて,プロジェクト名のターゲットをダブルクリックで開きます。
2.ウインドウの左側リストから「設定」→「シンプルビュー」→「詳細設定ビュー」を開きます。
3.「ビルド設定」が開くので,この中の「JVM_OPTIONS」に「-Xmxサイズ値 -Xmsサイズ値」を入力(追記)します。
4.以上の操作をすべてのターゲットのすべての「設定」ポップアップで行います。
5.ウインドウを閉じ,ターゲットをクリーニングしてビルドします。

※上記で指定した内容が,ビルドした運用版Webアプリのパッケージに含まれる各プラットフォーム用クラスパスファイル(例:MacOS用のクラスパスファイルは「Contents/MacOS/MacOSClassPath.txt」)の「# JVMOptions」行に反映されます。

■関連情報
OutOfMemoryError対応事例(@IT:Java Solution)
WebObjects旧版のJavaメモリリーク問題
WebObjects:[API Reference(javadoc)][ADC Tools][サポート]

■関連書籍をAmazonで検索:[Java][WebObjects 和書 洋書]
省メモリプログラミング―メモリ制限のあるシステムのためのソフトウェアパターン集

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ プログラム・プログラマへ にほんブログ村 IT技術ブログ ネットワーク・SEへ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。


ioPLAZA【アイ・オー・データ直販サイト】ioPLAZA【アイ・オー・データ直販サイト】ioPLAZA【アイ・オー・データ直販サイト】ioPLAZA【アイ・オー・データ直販サイト】

| | トラックバック (0)

WebObjects:MySQLのためのEOModelの設定

WebObjectsの運用環境で稼動するWebアプリケーションからデータベースにアクセスするためには,データベースの情報を定義するEOModelファイルが必要です。このEOModelファイルはEnterprise Objects Framework(EOF)からJDBCアダプタを介してデータベースにアクセスするためのもので,データベースへのアクセスに必要なJDBCの定義を設定しておく必要があります。
当方では,データベースはもっぱらMySQLを使っていますが,その場合にEOModelファイルに設定しているJDBCの定義をサンプルとして以下に公開します。
MySQLのバージョンは5.0.xで,JDBCアダプタはMySQL Connector/J 5.0.xを使用しています。JDBCアダプタは,Mac OS Xの環境では「/Library/Java/Extensions/」にインストールしています。(参考

JDBC Connectionの設定:

名称設定値
JDBC URL:jdbc:mysql://ホスト名/データベース名?capitalizeTypeNames=true&useUnicode=true&
characterEncoding=UTF8&tinyInt1isBit=false&autoReconnect=true&maxReconnects=3
UserName:MySQL上に作成した,Webアプリからアクセスするデータベースのユーザ名。
Password:同パスワード。
Driver:当方では空白で接続できていますが,「com.mysql.jdbc.Driver」を指定する例もあるようです。
Plugin:空白でOKです。
注:JDBC URLはレイアウトの関係で途中改行を入れていますが,実際は1行です。

JDBC URLで設定した各パラメータについての解説

ホスト名
MySQLが稼動しているホスト名またはIPアドレスを指定します。
WebObjects運用環境とMySQLが同じホストで稼動しているなら,ホスト名は「localhost」または「127.0.0.1」になります。

データベース名
MySQL上に作成した,Webアプリからアクセスするデータベース名を指定します。

capitalizeTypeNames=true
タイプ名を大文字にします。
ドキュメントによると,WebObjectsから呼ぶときはこれを有効にしておくことになっているらしいです。

useUnicode=true
Unicode系の文字エンコーディングを使用することを宣言します。
MySQL 5.0.xではデフォルトがtrueです。

characterEncoding=UTF8
文字エンコーディングをUTF-8に指定します。
MySQLが5.0になって,データベースごと,テキストフィールドごとに文字コードを指定できるようになりましたが,その指定を行った場合はここにはUTF-8を指定することになっているようです。→こちらの最後を参照。
ここで指定した文字コードがデータベースに書き込まれるのは,データベースの文字コードに「binary」とか指定したときに有効なのではないかと思われます。
useUnicodeとcharacterEncodingについての詳細はこちらを参照。

tinyInt1isBit=false
TINYINT(1)を8bit値として扱います。詳細はこちらを参照。
MySQLの旧バージョンにアクセスするプログラムとソースコードを共通化するために,MySQL5.0.xでもTINYINT(1)は8bit値として扱うようにしています。

autoReconnect=true
データベースへクエリを送信する前にデータベースとの接続を確認し,接続が切れていれば再接続を試みます。
ただし,再接続を“安全に”行うことはできず,autoReconnectの機能は将来バージョンで廃止になるようです。
接続が切れる例としては,mysqldはデフォルトでアイドル状態が8時間続いた接続を閉じてしまいます。
この接続が切れるまでのアイドル時間は,「my.cnf」ファイルの[mysqld]セクションで定義する「wait_timeout」(または「interactive_timeout」)パラメータにより指定されます。

maxReconnects=3
autoReconnect=trueのときに再接続を試みる最大の回数です。
注:このパラメータは,MySQL Connector/Jの5.0のドキュメントには記載がありますが,5.1のドキュメントからはなくなっています。

■関連情報
WebObjects:JDBC URL を指定してデータベースサーバの文字エンコードを選択する方法
MySQL 5.1:MySQL Connector/J よくある問題と解決法
MySQL Connector/Jに対してJDBC URLで指定できるパラメータ:[5.0][5.1]
Enterprise Objects Frameworkの解説(Wikipedia)
WebObjects:Javaライブラリの利用方法
WebObjects:[API Reference(javadoc)][ADC Tools][サポート]

■関連書籍をAmazonで検索:[MySQL][WebObjects 和書 洋書][JDBC]
実践 JDBC―Javaデータベースプログラミング術

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ プログラム・プログラマへ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。


ノートンモバイルセキュリティバナーブックオフオンライン【PC・携帯共通】

| | トラックバック (0)

WebObjects:日本語の基本

WebObjectsで開発を行うときの日本語に関する注意点です。開発環境はMac OS Xを想定しています。

開発環境における注意点
プロジェクトの保存場所
プロジェクトファイルを保存するフォルダはフルパスで日本語を含むフォルダには置かないようにします。
そうしないとWebObjectsBuilderやJavaコンパイラがファイルを開くことができません。
(/Usersの別名の「ユーザ」など,フォルダ名が別名表示のものはOK)

文字エンコーディングの設定
開発を始める前に開発環境の文字エンコーディングを揃えます。
ProjectBuilder及びXcodeの文字コードは,日本語環境では「日本語MacOS」(シフトJIS)がデフォルトですが,WebObjectsBuilderの初期値は英文系なので,この設定のまま使用するとWebObjectsBuilderが裏でJavaのソースを書き換えたときに,文字エンコーディングの不一致でソースコードに含まれる日本語が全滅してしまいます。
このようなことにならないために,事前にWebObjectsBuilderの文字エンコーディング設定(「Preferneces」→「General」→「Default Encoding」)をProjectBuilder/Xcodeの文字エンコーディング設定(「環境設定」→「テキスト編集」→「デフォルトのファイルエンコーディング」)に合わせておく必要があります。

ProjectBuilder/Xcodeのデフォルトエンコーディングは,新規コンポーネント及び新規ファイルで適用されます。
「新規プロジェクト」で作られたJavaソースファイル(ClassisグループのApplication.java,Session.java,DirectAction.javaと,WebComponentsグループ→MainのMain.java)の文字エンコーディングは,環境設定にかかわらず「Mac OS Roman」になっています。
この文字エンコーディングを変更してデフォルトの文字エンコーディングに揃えるには,ProjectBuilder/Xcodeで各ソースファイルを開き,「形式」メニュー→「ファイルエンコーディング」で文字エンコーディングを指定し,ダイアログで変換を指定して保存します。

また,既存のソースファイルをプロジェクトに追加して利用する場合も,利用するファイルの文字エンコーディングとデフォルトの文字エンコーディングを揃える必要があります。
これを揃える場合も,各ソースファイルを開いて「形式」メニュー→「ファイルエンコーディング」でデフォルトと同じ文字エンコーディングを指定して変換・保存します。

Xcodeでバックスラッシュを入力する
日本語入力に「ことえり」を使っていてキーボードがJISキーボードだった場合,英数モードで¥キーを押すとデフォルトで半角円記号が入力されますが,XcodeでUTF-8などUnicode系の文字コードのソースファイルを編集していた場合,半角円記号はバックスラッシュとは別文字です。そのため文字列中にバックスラッシュのつもりで円記号を入力していると,コンパイルエラーが起きたりプログラム実行時に思わぬ動作をすることがあります。
¥キーでバックスラッシュを入力するには,ことえりの「環境設定」→「入力文字」を開いて「JISキーボードの¥キーで入力する文字」のポップアップで「\(バックスラッシュ)」を選びます。

日本語のためのコーディング
WebアプリがHTMLで使用する文字コードの指定
WebObjectsで開発するWebアプリについて,各コンポーネントを表示したりテキストデータを入出力したりするときに日本語を使用する場合は,使用する日本語文字コードを指定する処理をソースコードに追加する必要があります。
ちなみに下記の例ではUTF-8を指定していますが,他の文字コードを指定することもできます(例:"Windows-31J","EUC-JP","ISO-2022-JP")。なお,ここで指定する文字コードは,サーバで稼動するWebアプリとクライアントのWebブラウザとの間でテキストをやりとりするときの文字コードであり,Webアプリの内部処理やデータベースで使用する文字コードとは無関係です。

注:シフトJISの文字エンコーディングは「Shift_JIS」ではなく「Windows-31J」を使いましょう。詳細はこちら

1)Application.javaのApplicationクラスに以下のメソッドを追加します。

// 各コンポーネントにおけるクライアントからのリクエストのデフォルト処理
public void takeValuesFromRequest(WORequest req, WOContext cont)
{
  req.setDefaultFormValueEncoding("UTF8");
  req.setFormValueEncodingDetectionEnabled(true);
  super.takeValuesFromRequest(req, cont);
}

// 各コンポーネントにおけるクライアントへのレスポンスのデフォルト処理
public void appendToResponse(WOResponse res, WOContext cont)
{
  res.setContentEncoding("UTF8");
  res.setHeader("text/html;charset=utf-8", "Content-Type");
  super.appendToResponse(res, cont);
}

2)Applicationクラスのコンストラクタに以下のコードを追加します。
WOMessage.setDefaultEncoding("UTF8");

3)コンポーネントのレスポンスにHTML表示以外のもの(CSVやPDFのダウンロードなど)がある場合,3-A)または3-B)どちらかの作業が必要です。(CSVレスポンスの具体的な実装例はこちら

3-A)コンポーネントクラスにappendToResponseメソッドを追加すると,追加したメソッドによりApplicationクラスのappendToResponseメソッドがオーバーライドされます。
コンポーネントクラスでappendToResponseメソッドをオーバーライドし,このメソッドにて
res.setHeader("text/html;charset=utf-8", "Content-Type");
の内容を,そのコンポーネントのレスポンスに合わせて適宜書き換えることで,HTML以外のレスポンスに対応します。

3-B)ApplicationクラスのappendToResponseメソッドから
res.setHeader("text/html;charset=utf-8", "Content-Type");
の行を削除すると,コンポーネントのレスポンスからContent-Typeの指定行が消えます。
この状態で,各コンポーネントのソースファイルの中から「コンポーネント名.html」ファイルを開き,<head>タグの中で,
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=utf-8">
を追加すると,この指定行がコンポーネントのレスポンスに追加されます。
この指定行の追加をすべてのコンポーネントで行った上で,この指定行の内容をコンポーネントごとに適宜書き換えることで,HTML以外のレスポンスに対応します。

テキストデータの改行コードをWeb画面上で改行させる
テキストデータをWebObjectsBuilder上でWOStringにバインドして表示させると,テキストデータに改行が含まれているにもかかわらず改行されずに表示されてしまいます。
これは,改行(CRLF)は無視して表示するHTMLの仕様によるものです。画面上で改行するには「<br>タグ」が必要です。WOStringでは記号のエスケープ処理は行いますが,改行の<br>タグへの変換は行わないので,この変換を行うコードが必要になります。WebObjectsのクラスライブラリを使って「改行→<br>タグ変換」を行うのは以下のようなコードになります。
String str = "あいうえお\r\nかきくけこ"; // 改行を含む文字列。
str = WOMessage.stringByEscapingHTMLAttributeValue(str);
NSArray array = NSArray.componentsSeparatedByString(str, "&#13;&#10;");
str = array.componentsJoinedByString("<br/>");
上記コードのうち「WOMessage.stringByEscapingHTMLAttributeValue」は,文字列に含まれる記号のうち,HTMLでエスケープが必要なものをエスケープします。
「NSArray.componentsSeparatedByString」は,第一引数の文字列(str)を第二引数の文字列(改行コード)で分割します。上記の例では改行コード(CRLF)を10進表記で指定しています。
「array.componentsJoinedByString」では,分割した文字列を,間に「<br/>」を挟んでつなげています。

以上のコードで得たstrをWOStringにバインドします。このときWOStringのアトリビュート「escapeHTML」はOFFに指定しておきます。

■関連情報
WebObjects:Web ブラウザの文字エンコードを設定する方法
Java:Shift_JISのエイリアスの変更について
Javaで指定できる文字エンコーディング[1.3][1.4][1.5]
IANA:charsetで指定できる文字セット
WebObjects:[日本語技術マニュアル][開発と運用について][API Reference(javadoc)][ADC Tools][サポート]

■関連書籍をAmazonで検索:[WebObjects 和書 洋書]
WebObjectsアプリケーション開発ガイド

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ プログラム・プログラマへ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。

| | トラックバック (0)

WebObjects:WOMailDeliveryで日本語メール送信

【問題】
WOMailDeliveryは,WebObjectsのフレームワークに含まれるメール送信クラスです。
WOMailDeliveryクラスには文字コード変換の機能が含まれておらず,送信するメール本文の日本語文字列をISO-2022-JPに変換することができません。そのため,メールの本文が日本語だと文字化けして送信されてしまいます。

【対応策】
WOMailDeliveryのメール送信クラスにメール本文を渡す前に,JavaStringクラスのテキストエンコーディング機能を使ってメール本文をISO-2022-JPに変換し,変換結果を格納したStringクラスのインスタンスを作ってこれをWOMailDeliveryのメール送信クラスに渡すことで,日本語メールを送ることができます。
日本語の本文が入ったStringからISO-2022-JPに文字コード変換したStringを作るには以下のようにします:

String message = new String("こんにちは。\n"); // メール本文.

// 本文をISO-2022-JPに文字コード変換したバイト列にする.
byte[] bytes = message.getBytes("ISO2022JP");

// バイト列でStringクラスインスタンスを作る.
// ISO-8859-1は「北米ラテン文字」で,ISO-2022-JPのバイト列を変換せずに取り込むために指定.
String sendMessage = new String(bytes, "ISO8859_1");
あとはこのsendMessageをWOMailDeliveryのメール送信メソッド(WOMailDelivery.sharedInstance().composePlainTextEmail())に渡せばOKです。

■追記
WOMailDeliveryは,指定されたメールサーバ(MTA)のポート25番にSASL認証なしでメールを送信しようとします。そのため,昨今のスパム対策などによりWOMailDeliveryが利用できない場合があります。そのような場合はJavaMailが使えます。(JavaMailによるメール送信の実装例はこちら

■関連情報
WOMailDeliveryの基本的な使い方:Sending E-mail from a WebObjects Application
ISO8859-1(Wikipedia
WebObjects:[日本語技術マニュアル][API Reference(javadoc)][ADC Tools][サポート][製品紹介]

■関連書籍をAmazonで検索:[WebObjects 和書 洋書]
メール送信システムの作り方大全―Perl/PHP/JavaMail/Windowsそれぞれの場合

■Apple Store:Windows/Solaris版[WebObjects 5.2]

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ プログラム・プログラマへ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。


| | トラックバック (0)

WebObjects:Javaソースコードに日本語を埋め込む

【問題】
WebObjectsで開発したWebアプリケーションで日本語を表示しようとしたときに,日本語文字列をJavaソースコードに埋め込んで,

String str = "こんにちは";
このように書いて,この文字列データをWebブラウザで表示させると文字化けすることがあります。

【原因】
Javaコンパイラはデフォルトでソースファイルの文字コードを英文として解釈しようとします。
JavaのStringクラスが文字列データをUnicode(UCS-2)で保持するため,コンパイル時にソースファイル中の文字列データに対して文字コード変換を行います。このときソースファイルの文字コードがたとえばShift_JISだった場合,コンパイラが行うべき文字コード変換が「英文→UCS2」ではなく「Shift_JIS→UCS-2」でなければならないことをJavaコンパイラに知らせる必要があります。逆にコンパイラに「Shift_JIS→UCS-2」の変換を指定した場合,すべてのソースファイルの日本語文字コードがShift_JISに揃っていなければなりません。

【対応策】
この問題に対処するには次の2つの対処を行います。
1)開発環境からJavaコンパイラに対して,オプション指定で日本語文字コードを指定する。
2)ソースファイルで使用する日本語文字コードを1)で指定したものに統一する。

●Mac OS XのWebObjects開発環境では以下の手順でこれに対応します。
1)Javaコンパイラに日本語文字コードを指定する。
・ProjectBuilder(Mac OS X 10.2.xまで)の場合
「ターゲット」タブを選んで,各ターゲットの「Javaコンパイラ設定」を開くと「ソースファイルのエンコーディング」というポップアップメニューがありますので,これをソースコードの文字コードと同じものにします。そのためにはProjectBuilderの「ProjectBuilder」メニュー→「環境設定」ダイアログの「テキスト編集」タブ→「デフォルトのエンコーディング」に設定してある文字コードと同じものにしてください。この操作はすべてのターゲットで行ってください。

・Xcode(Mac OS X 10.3以降)の場合
ウインドウの左枠の中に「ターゲット」があり,この中には通常プロジェクト名,「Application Server」,「Web Server」の3つのターゲットがあります。この各ターゲット名をダブルクリックすると,ターゲットの設定ダイアログが表示されます。この中の「Javaコンパイラの設定」を選んで表示される設定パネルに「ソースファイルのエンコーディング」がありますので,ここでソースファイルの文字コードを指定します。この操作はすべてのターゲットのすべての「設定」ポップアップで行ってください。

注意:開発の初期の段階で,すべてのターゲットと設定で文字コードを指定しておくことは重要です。
開発版の設定の文字コードだけ変更しても,開発環境で動作テストするときは正常に動作しますが,そのまま開発を続けると,運用版をビルドして実機で稼動させるときになって文字化けが再発することになります。変更が必要だとわかっているうちに忘れずに変更しておきましょう。

以上の操作を行うことで,Javaコンパイラはソースコードが指定した文字コードで書かれているものとして処理するようになります。

2)ソースファイルの文字コードの設定
ProjectBuilder/Xcodeにおいて新規ファイルを作成すると「環境設定」→「テキスト編集」→「デフォルトのファイルエンコーディング」で指定した文字コードが適用されます。そのためこの値も1)で指定したものに合わせます。ただし「新規プロジェクト」で作成されるソースファイル(「Application.java」「Session.java」「DirectAction.java」)の文字コードは設定にかかわらず「Mac OS Roman」なので,これらの文字コードは後で手動で変更する必要があります。

各ソースファイルの文字コードはProjectBuilder/Xcodeが認識しており,ソースコードの編集で日本語入力が行われると,認識されている文字コードで日本語文字列がソースコードに挿入されます。特定のソースファイルの文字コードがどのように認識されているかは,ソースファイルをプロジェクトから開いて「形式」メニュー→「ファイルエンコーディング」で確認することができます。ここで認識されている文字コードと,1)で指定した文字コードが食い違っていた場合,文字化けを起こす原因になります。
この食い違いを正すには,ProjectBuilder/Xcodeの「形式」メニュー→「ファイルエンコーディング」で正しい文字コードを指定します。すると「再解釈」または「変換」を指定するダイアログが表示されるので,開発環境の文字コードの認識の間違いを正す場合は「再解釈」を,別の文字コードに変換する場合は「変換」を選びます。これによりソースファイルの文字コードとコンパイラが認識する文字コードを合わせることができます。

注意:文字コードの認識が間違った状態で「変換」を行うと日本語文字列データが壊れます。壊れたまま上書き保存してしまわないようにしましょう。

3)WebObjectsBuilderの環境設定
WebObjectsBuilderはソースファイルへのメソッドの追加などを行いますが,このときWebObjectsBuilderの環境設定で指定された文字コードと実際のソースファイルの文字コードが異なる場合,ソースファイルの日本語文字データが壊れます。そのためWebObjectsBuilderの環境設定でも1)と同じ文字コードを設定しておく必要があります。
この設定は,「WebObjects Builder」メニュー→「Preferences...」で環境設定ダイアログを開いて「General」タブの「Default encoding」ポップアップで行います。

■関連情報
WebObjects:[日本語技術マニュアル][API Reference(javadoc)][ADC Tools][サポート]

■関連書籍をAmazonで検索:[Java][WebObjects 和書 洋書]
プログラミングMacOS X for Java Geeks

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ プログラム・プログラマへ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。


ノートン体験板バナー

| | トラックバック (0)

WindowsでWebObjects運用(その5)


Monitor(JavaMonitor)の設定とWebアプリ起動
JavaMonitorは,WebObjects運用環境の設定を行うWebアプリケーションです。JavaMonitorを使ってWebアプリを運用するサーバ(wotaskd)の環境設定,運用するWebアプリの設定,Webアプリ起動のスケジューリング設定などを行うことができます。

ローカルで稼動しているJavaMonitorにアクセスするときのURLは
http://localhost:56789/scripts/WebObjects.exe/JavaMonitor.woa」になります。
JavaMonitorの起動・停止は「管理ツール」→「サービス」の「Apple WebObjects Monitor 5」から行うことができます。

参考:Mac OS X Serverで稼動するJavaMonitorについてはこちら

JavaMonitorの設定(1):環境設定
JavaMonitorの「Preferences」タブのページで下記の設定を行うことができます。

1)パスワード設定(Monitor Password)
JavaMonitorにアクセスするときのログインパスワードを設定します。
パスワードを設定しなかった場合,JavaMonitorにアクセスすると直ちに設定の閲覧・編集を行えます。

2)リフレッシュ設定(Detail View Refesh Settings)
詳細情報を表示したときの,情報ページのリフレッシュのON/OFF及びリフレッシュ時間を設定します。

JavaMonitorの設定(2):ホストの登録
JavaMonitorの「Hosts」タブを選んで,WebObjects運用版をインストールしたホスト(wotaskdが稼動しているホスト)を登録します。
この設定は,稼動するWebアプリケーションを登録するより前に行っておく必要があります。
設定手順:
1.「Add Host」ボタンの後ろのテキストボックスに登録するホストのホスト名またはIPアドレスを入力します。
2.登録するホストのタイプをポップアップメニューから選びます。
3.「Add Host」ボタンを押して,入力したホストの行がリストに追加されれば完了。

JavaMonitorの設定(3):HTTPアダプタの設定
JavaMonitorの「Sites」タブを選んでHTTPアダプタの設定を行うことができます。

1)アダプタURL
HTTPアダプタのフルパスを登録します。
WindowsでISAPIアダプタ(Windows.dll)を使用する場合,アダプタURLは
「http://ホスト名/cgi-bin/WebObjects.dll」となります。

2)アダプタ設定
負荷分散などについての設定を行います。(設定したことがないので略)

3)警告メール
SMTPホストと宛先メールアドレスを設定しておくことで,HTTPアダプタがエラーを検出したときに警告メールを送ることができます。ただし,25番ポートへSMTP認証なしでメール送信するのでスパム対策が厳しい環境ではメール送信に失敗する可能性があります。

JavaMonitorの設定(4):Webアプリケーションの登録と起動
JavaMonitorの「Applications」タブを選んで,運用するWebアプリケーションを登録します。
登録手順:
1.事前に運用版のWebアプリケーションを開発環境でビルドし,Windowsサーバに転送しておきます。
2.「Applications」ページの下の「Add Application Named」テキストボックスに登録するアプリケーション名を入力し,「Add Application」ボタンを押します(ここで指定したアプリケーション名が,アプリケーションにアクセスするURL名に使われます)。
3.「Configuratiion Application "アプリケーション名"」ページに移動するので,「Path」→「Windows」のテキストボックスにWebアプリケーションの起動スクリプト「.CMD」ファイルまでのパスを設定します。(Path WizardによりGUIでパスを指定することもできます)
4.「Path」行の「Push」ボタンと「Update for New Instance Only」ボタンを押すことで入力を確定します。
5.それ以外の「New Instance Defaults」パラメータの値についてはこちらを参照してください。
6.「Configuratiion Application」の設定が終わったら右上の「Detail View」ボタンを押して,Detailページに移動します。
7.画面下の「Add」ボタンの後ろのテキストボックスに,起動するWebアプリのインスタンス数を入力します。続いて「on host:」の後ろのポップアップメニューでインスタンスを稼動するサーバを指定します。(ここでリストアップされるサーバは「Hosts」タブのページで登録したものです)
負荷分散を行わない場合,インスタンス数は1です。「Add」ボタンを押すと,リストにインスタンスの行が追加されます。
8.インスタンス行の「Start-Stop」列の青いボタンを押すと,インスタンスの起動が始まります(レバーが上がってOFFからONに変わるアニメーション)。「Status」が「ON」になれば起動完了です。このときのステータスの変化を早く反映させるには「Refresh Now」ボタンを押します。
「Auto Recover」がONになっていた場合,青いボタンを押さなくても一定時間が経過すると自動でインスタンスの起動が始まります。
9.動作確認
StatusがONになってWebアプリの起動が成功したら,Detail画面のWebアプリ名がリンクボタンに変わったはずです。このリンクボタンをクリックするとWebアプリが起動してWebアプリのトップページが表示されるはずです。
この状態で,WebObjects運用環境でのWebアプリの稼動が開始しています。
起動に失敗した場合,StatusがONになりません。この場合は運用環境の構築ミスやJavaのバージョンの不整合がないかを確認してください。また,開発環境で正しく起動するか,起動する場合は運用版をビルドするときのパラメータが開発版と同じかを確認してください。
(Mac OS X ServerなどUNIX系のOSでは,Webアプリのパーミッションが原因で起動できないことがあります)

ここまででアプリケーションが正常に起動できれば,このままアプリケーションを運用環境で稼動させることができます。

■関連情報
WebObjectsアプリケーションの運用[PDF]
WebObjects:[ADC Tools][サポート]

■関連書籍をAmazonで検索:[WebObjects 和書 洋書][Windows Server 2003][IIS 6.0]
[24時間365日] サーバ/インフラを支える技術

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ ネットワーク・SEへ にほんブログ村 IT技術ブログ Webサイト構築へ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。


▼WindowsでWebObjects運用[その1][その2][その3][その4][その5]

| | トラックバック (0)

WindowsでWebObjects運用(その4)


IISの設定
WebObjectsアプリに接続するためのWebサーバとしてIISを使用する場合のIISの設定方法について説明します。
IIS側で設定することは,IISをWebサーバとしてセットアップすることと,IISからWebアプリを呼び出す環境を整えることです。

ディレクトリ構成
IISをデフォルト設定でインストールすると,ドキュメントルートは「C:\inetpub\wwwroot」になります。このままWebObjectsをデフォルト設定でインストールすると,「C:\inetpub\scripts」にHTTPアダプタがインストールされます。
ここでインストールされるHTTPアダプタは「WebObjects.dll」と「WebObjects.exe」の2つですが,前者がIIS用ISAPIアダプタ,後者が汎用CGIアダプタです。CGIアダプタは動作効率が良くないのとセキュリティ上の問題があるので,ISAPIアダプタを使うようにセットアップを行います。

セットアップ
1)ISAPIの実行許可
IIS 6.x(Windows Server 2003)でISAPIアダプタを使用するには,環境設定でISAPIアダプタの実行を許可する必要があります。
この設定にはIISの設定ツールであるIISマネージャ(「インターネットインフォメーションサービス(IIS)マネージャ」)を使います。IISマネージャは「管理ツール」に含まれます。

設定方法:
1.IISマネージャを開いて左側リストの中からローカルサーバ名を開き,その下の「Webサービス拡張」を表示させます。
2.右側の設定パネルの「すべての不明なISAPI拡張」を選んで「許可」ボタンを押してください。
(新しいWebサービス拡張を追加」ボタンから,使用するアダプタ(ここではWebObjects.dll)を個別に登録することもできるようですが,このやり方は試していません。その場合の手順はこちら

参考:
IIS 6.0のWeb拡張機能を有効にする(@IT Windows TIPS)
IIS を動的コンテンツに対して構成する(Microsoft TechNet)

2)仮想ディレクトリ「cgi-bin」の作成
cgi-binは,WebObjects運用環境ではWebサーバとWebアプリを結合するHTTPアダプタが格納されているディレクトリです。IISの仮想ディレクトリの仕組みを使って,Webクライアントからアクセスしたときに別の場所にあるcgi-binがドキュメントルートの下にあるように見えるようにします。IISとWebObjectsをデフォルトでインストールすると,cgi-binの本体は「C:\inetpub\scripts」になります。
仮想ディレクトリの設定はIISマネージャを使います。

設定方法:
1.IISマネージャを開き,左側のリストの中からローカルサーバ名を開き,その下の「Webサイト」を開きます。
2.「Webサイト」をクリックし,右クリックで「新規作成」→「仮想ディレクトリ」を選びます。
3.仮想ディレクトリ作成ウィザードが起動するので,
・エイリアス名:「cgi-bin」
・パス:(デフォルトインストールの場合)「C:\inetpub\scripts」
・アクセス許可:「ISAPIアプリケーションやCGIを許可する」をチェック
で仮想ディレクトリを作成します。

以上でIISの設定は完了です。

■関連情報
インターネット・インフォメーション・サービス(Windows Server 2003 ドキュメント)
Appleサポート:WebObjects5.1のIISアダプタのパフォーマンス問題

■関連書籍をAmazonで検索:[WebObjects 和書 洋書][Windows Server 2003][IIS 6.0]
4Gbpsを超えるWebサービス構築術

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ ネットワーク・SEへ にほんブログ村 IT技術ブログ Webサイト構築へ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。


▼WindowsでWebObjects運用[その1][その2][その3][その4][]
デル株式会社デル株式会社デル株式会社

| | トラックバック (0)

WindowsでWebObjects運用(その3)


インストール時の注意点

インストールの順番について
WebObjectsをインストールする前に,IISとJavaをインストールしておきます。
これは,WebObjectsのインストーラがIISとJavaのディレクトリ構成から環境変数の設定を行うためです。
但し,インストーラが設定するJavaのパスは正しくないことがあります(後述)。

WebObjectsのインストールパス
インストーラCDからWebObjects5.2をインストールするとき,パラメータをデフォルトでインストールすると,「C:\Apple」というディレクトリが作られ,その下にWebObjectsが一式インストールされます。
同時にシステム環境変数に「NEXT_ROOT」というエントリが作られ,その値として「C:\Apple」が登録されて,このディレクトリがWebObjects環境のトップディレクトリとして認識されます。

WebObjectsのアップデートについて
WebObjects5.2からアップデートするとき,アップデータを実行する前に起動しているWebアプリとWebObjectsデーモン(wotaskd)を停止しておくのが安全です。
WebObjectsデーモンを停止する手順として,「スタート」メニュー→「管理ツール」→「サービス」を開き,「Apple WebObjects Task Daemon 5」を選んで「サービスの停止」で停止させます。
「Apple WebObjects Monitor 5」も起動していれば停止しておきましょう。
WebObjectsデーモンを停止せずにアップデートした場合,アップデートが途中で止まって使用中のファイルの上書きを警告するダイアログが表示されます。このときはデフォルトボタンの「Ignore」(無視)ではなく,左端の「Reboot」(再起動時に置き換える)を選んで先に進みます。

WindowsにWebObjectsをインストールし,これをアップデートしたあとで,アップデートしたバージョン番号を確認するには以下のようにします。

現在のバージョンを確認する。
現在インストールされているバージョンは,「プログラムの追加と削除」を開いて「現在インストールされているプログラムの一覧」の「WebObjects」の行で確認できます。

アップデートの履歴を確認する。
アップデータを実行すると,レジストリキー「HKEY_LOCAL_MACHINE\SOFTWARE\Apple」の下に,これまでに実行されたアップデータのバージョン番号がキー名としてすべて残っています。
そのため,このキー名をレジストリエディタで確認することにより,アップデートの履歴を知ることができます。

レジストリエディタの使い方:(higaitaisaku.comより)
インストール済みのWebObjectsのバージョンを確認する方法

OSの環境変数に設定されるJavaのパスについて
インストーラがOSの環境変数に設定したパスは正しくない場合があり,インストール後に見直す必要があります。
Java SDK(JDK)1.4.2をインストールしたとき,Javaの実行環境(JRE)として,「C:\ProgramFiles\Javaの下に単体版JRE」「JavaSDK(JDK)に含まれるJRE」と2つのJREがインストールされますが,WebObjectsは後者のJavaSDK(JDK)に含まれるJREでないと稼動できません。ところがインストーラがOSの環境変数に設定するJavaのパスは前者の単体版JREのほうを指している場合があります。この場合はJDKに含まれるJREを指すようパスを設定し直す必要があります。
このパスを設定し直すには,「システムのプロパティ」→「詳細設定」→「環境変数」を開き,
「WEBOBJECTS_JAVA_EXTENTIONS」
「WEBOBJECTS_JAVA_HOME」
「Path」
に設定されたパスについて,JREまでのパスを「単体版JRE」までのパスから「JDK内のJRE」までのパスに書き換えます。
また,Pathのなるべく前(%SystemRoot%で始まるエントリ群の直後)に「JDKまでのパス\jre\bin;」を(なければ)追加します。
また,WebObjectsをアップデートするたびに,Pathの後ろに%NEXT_ROOT%で始まるエントリが追加されていますが,すべてのアップデートが終了した後で重複するエントリはすべて削除します。

JDBCアダプタのインストール先について
Webアプリとデータベースを接続するJDBCアダプタは,以下の場所に配置すると使用できます。
「NEXT_ROOT\Local\Library\WebObjects\Extensions」
(「NEXT_ROOT」は上で説明したとおり,システム環境変数に設定されたWebObjects環境の最上位ディレクトリパスです。デフォルトインストールでは「C:\Apple」で登録されます。)

インストール後の動作チェック
インストールが完了したら,WebObjects運用版が稼動しているか確認します。
Webブラウザを開いて次のURLを入力してみてください。
http://localhost:1085/
「Wotaskd for WebObjects 5.2」というタイトルのWebObjects環境変数一覧ページが表示されればwotaskdデーモンが稼動しています。
次に以下のURLを入力してみてください。
http://localhost:56789/scripts/WebObjects.exe/JavaMonitor.woa
Monitorページが表示されればJavaMonitorが稼動しています。

もしもこれらのページがうまく表示されなかった場合,「スタート」メニュー→「管理ツール」→「サービス」を開いて「Apple WebObjects Task Daemon 5」及び「Apple WebObjects Monitor 5」のプロパティを開き,それぞれについて以下を確認してみてください。
・「スタートアップの種類」が「自動」になっているか。
・「サービスの状態」が「開始」になっているか。

その他
WebObjects 5 インストール時の注意事項
WebObjects 5.2 WindowsでPATH環境変数を修正する方法

■関連書籍をAmazonで検索:[WebObjects 和書 洋書][Windows Server 2003][IIS 6.0]
Webアプリケーション・サーバー 設計・構築ノウハウ

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ ネットワーク・SEへ にほんブログ村 IT技術ブログ Webサイト構築へ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。


▼WindowsでWebObjects運用[その1][その2][その3][その4][その5]

| | トラックバック (0)

WindowsでWebObjects運用(その2)


各インストーラ入手先

 

WebObjects 5.2
市販パッケージソフトのWebObjects 5.2を購入します。
サーバへ運用環境のインストールを行うには,インストールディスク「for Windows and Solaris」の「Deployment」フォルダ→「Windows」→「Setup.exe」を実行してインストールを行います。
WebObjects 5.2.4へのアップグレードは,5.2をインストールディスクからインストールした後,アップルのサイトからアップデータをダウンロードしてアップグレードを行います(後述)。

インターネットインフォメーションサービス(IIS) 6.0
IIS 6.0をOSのインストールディスクから追加インストールします。

Java SDK 1.4.2インストーラ
Java 1.4.2 ダウンロードページからJ2SE SDKのWindows版を入手します。
注意:運用環境でもJavaはJava SDK(JDK)が必要です。

WebObjectsアップデータ(開発版・運用版共通)
WebObjects 5.2.4の英語のページの章「Installing WebObjects 5.2.4 on Windows 2000 System Requirements」より「Download」をクリックして「WO524.exe」を取得します。
システム要件などは日本語ページを参照してください。

注:上記ページにて,WebObjects5.2.4アップデータのシステム要件がWebObjects5.2となっているため,5.2をインストールした直後に5.2.4へアップグレードする説明になっておりますが,当方で実稼動している環境ではWebObjects5.2をインストールした後,5.2.1→5.2.2→5.2.3→5.2.4の順ですべてのアップデータを実行しています。
WebObjects 5.2.1~5.2.3アップデータは以下からダウンロードできます。
WebObjects5.2.1の「Windows 2000 への WebObjects 5.2.1 インストール」より「WO521.exe」を取得
WebObjects 5.2.2の「Windows 2000 への WebObjects 5.2.2 のインストール」より「WO522.exe」を取得
WebObjects 5.2.3の「Windows 2000 への WebObjects 5.2.3 のインストール」より「Windows 2000 対応アップデートインストーラ 」をクリックし「WO523.exe」を取得

参考:WebObjectsパッチリスト

データベース
WebObjectsでは,基本的にJDBCで接続可能なデータベースを利用することができます。
アップルで動作確認されたデータベースのリストはこちら

データベースにMySQLを使う場合:MySQLのインストーラ入手先
MySQL 5.0.x:[本体][JDBCアダプタ][GUIツール]
MySQLリファレンスマニュアル:[4.1][5.1]
その他:MySQL ドキュメント

データベースにOracleを使う場合:Oracle用JDBCアダプタに関する情報
オラクル社:Oracle JDBC Driver ダウンロード
Appleサポート:Oracle JDBC ドライバの使用方法

■関連書籍をAmazonで検索:[WebObjects 和書 洋書][Windows Server 2003][IIS 6.0]
プロとしてのOracleアーキテクチャ入門 Oracle現場主義

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ ネットワーク・SEへ にほんブログ村 IT技術ブログ Webサイト構築へ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。


▼WindowsでWebObjects運用[その1][その2][その3][その4][その5]
ブックオフオンライン【PC・携帯共通】ノートンシリーズ新登場バナー

| | トラックバック (0)

より以前の記事一覧