トップページ | 2008年2月 »

2008年1月

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)

MySQL:TINYINT(1)の値

【問題】
MySQL数値型TINYINTは8bitの値で-128~127の値を格納できるはずですが,JDBCアダプタにMySQL Connector/Jを使用してJavaアプリケーションからMySQLデータベースのTINYINT(1)のフィールドに値を書き込むと,実際に書き込まれる値は0か1にしかなりません。
また,このフィールドの値をNumber型やその派生クラスの型で受け取ろうとすると,ClassCastException例外が発生します。

【対応策】
JDBCアダプタのデフォルトでは,TINYINT(1)はBIT(1)とみなされます。そのためこの値の設定・取得はNumber型やその派生クラスではなくBoolean型になります。
TINYINTに-128~127を格納するには,TINYINT(4)と桁数指定することで対処できます。また,TINYINT(1)のまま-128~127の値を格納したい場合は,JDBCアダプタの設定としてJDBC URLに「tinyInt1isBit=false」のエントリを加えます。

例:「tinyInt1isBit=false」を含めたJDBC URL
jdbc:mysql://ホスト名/データベース名?useUnicode=true&characterEncoding=UTF8&tinyInt1isBit=false

■追記:
「tinyInt1isBit=false」は,TINYINT(1)で-128~127の値が指定可能だった旧版(5.0以前)のMySQLで構築したデータベースのデータを,スキーマ定義を変更することなく新版で使用するためのもののようです。そのため最新版のMySQLでデータベーススキーマ定義を1から作る場合はこの設定は避けるべきと思われます。

以上とは逆に,旧版のMySQLにおいて,TINYINT(1)をBooleanとして扱う設定もあります。
「transformedBitIsBoolean=true」という指定で,これはConnector/J 3.1.9以降で指定可能です。
Connector/J 3.1.xはMySQL4.1以降が対象になります。(出典
この指定はMySQL5.0以降では指定する意味がありません。

■関連情報
MySQLの数値型:[4.1][5.1]
MySQL Connector/Jに対してJDBC URLで指定できるパラメータ:[5.0][5.1]
JDBCで値を受け渡すときのJavaの型:[5.0][5.1]

■関連書籍をAmazonで検索:[MySQL][JDBC]
MySQL徹底入門 第3版 ~5.5新機能対応~ (kindle版)

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


SoundLink Mini Bluetooth speaker_ii

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

Javadocで日本語APIリファレンスを作る

Javaに付属のコマンドツールに「javadoc」というのがあります。
このコマンドにより,JavaのソースファイルからHTML形式のAPIリファレンスを自動生成することができます。
Sunが公開しているJava組み込みクラスのAPIリファレンスは,Javadocで生成したAPIリファレンスの一例です。

Javadocはデフォルトで英語のソースファイルから英語のドキュメントを生成しようとします。
Javadocで日本語のドキュメントを生成するには,Javadocのコマンド実行時に以下のオプション指定を行います。

1)Javadocが生成するメッセージを英語から日本語にしたい。
→Javadocのコマンドオプションで,
「-locale ja」
と指定することで,ドキュメントのナビゲーションバーなどのメッセージが日本語になります。このメッセージの文字コードは,下記4)のオプション指定で決まります。
このロケールについての解説は「java.util.Locale」を参照。また,ここで指定できる言語コードのリストはこちらを参照。

2)生成されるHTMLファイルのヘッダで文字コード指定を行いたい。
→Javadocのコマンドオプションで,
「-charset "文字セット名"」(注:文字セット名はダブルクォーテーションで囲む)
を指定することで,ドキュメントのHTMLヘッダに

<meta http-equiv="Content-Type" content="text/html; charset=文字セット名">
の行が付加されます。
ここで指定できる日本語の文字セット名には「Shift_JIS」「euc-jp」「iso-2022-jp」「utf-8」「Windows-31J」があります。
ここで指定する文字セット名は下記4)の文字エンコーディング名と合わせる必要があります。HTMLヘッダにこの行を付加しない場合はブラウザのデフォルト値が適用されます。
ここで指定できる文字セット名のリストはこちらを参照。

3)Javaソースファイルの文字コードを指定したい。
→Javadocのコマンドオプションで,
「-encoding 文字エンコーディング名」
を指定します。これと下記4)との組み合わせで,ソースファイル内の文字列をHTMLに出力するときの文字コード変換の内容が決まります。
指定可能な文字エンコーディング:[Java 1.4][Java 1.5]

4)出力するHTMLファイルの文字コードを指定したい。
→Javadocのコマンドオプションで,
「-docencoding 文字エンコーディング名」
を指定します。これにより,上記1)の日本語メッセージの文字コードが決まります。また,上記3)との組み合わせで,ソースファイル内の文字列をHTMLに出力するときの文字コード変換の内容が決まります。
指定可能な文字エンコーディング:[Java 1.4][Java 1.5]

コマンド実行例:UTF-8のソースファイルからSJISのドキュメントを生成する。
javadoc -locale ja -charset "Shift_JIS" -encoding UTF-8 -docencoding SJIS -d docs -private *.java
(「-d docs」は出力ディレクトリに「docs」を指定,「-private」はprivateなクラスやメソッドのリファレンスも出力)

■関連情報
Javadocの基本的な使い方(JavaでHelloWorld)
Sun:Javadocのドキュメント[Solaris版][Windows版]
Java:Shift_JISのエイリアスの変更について

■関連書籍をAmazonで検索:[Java]
エンジニアのためのJavadoc再入門講座 現場で使えるAPI仕様書の作り方



にほんブログ村 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)

WindowsでWebObjects運用(その1)

Windows Server 2003 + IIS 6.xの環境でWebObjects運用版(5.2.4)を稼動させて,WebObjectsで開発したWebアプリケーションを運用する機会がありましたので,WebObjectsのインストールからWebアプリを稼動させるまでの手順を残しておきたいと思います。

動作環境
WebObjectsは5.3になって正式サポートOSは,開発環境としてMac OS X,運用環境としてMac OS X Serverのみになりました。
Windows版WebObjectsの最終バージョンは5.2.4になります。
これは市販パッケージのWebObjects5.2をインストールした後,アップデータを当てることで5.2.4に引き上げることができます。

運用環境にはJavaの実行環境が必要です。WebObjects5.2.4が動作保障しているJavaのバージョンは1.4.2です。
アップルのドキュメントには運用版はJavaのランタイム版(JRE)で動作するとありますが,Windowsでは運用環境でもJava SDK(JDK)をインストールし,JDKに含まれるJREを環境変数でパス指定しないとWebアプリが起動しません。
Mac OS X上のWebObjects5.3.xで開発したWebアプリをWindows Serverで運用する場合は,開発環境(Xcode)が使用するJavaのバージョンを1.4.2に指定することで,開発環境と運用環境のJavaのバージョンを合わせることができます。
以上の環境で,MacのWebObjects5.3環境でビルドしたWebアプリも動作するようです。

現在Windows Server 2003で稼動しておりますが,Windows版WebObjects 5.2.4が動作保障しているOS環境はWindows 2000です。
一応問題なく運用できているものの,動作保障された環境ではないことはご留意ください。

■追記:Apacheの利用について
Windows上で使用するWebサーバとして、IISではなくApacheを使おうとした場合,WebサーバとWebアプリを接続する「HTTPアダプタ」のApache版が必要になります。しかしながらWebObjectsをインストールしたときに,Apache用のHTTPアダプタは,実行ファイルではなくソースファイルがインストールされます。そのためApacheのHTTPアダプタは,自前でコンパイルする必要があります。また、提供されているHTTPアダプタのソースコードはApache1.3.x用で,Apache2.x以降で動作させるにはソースコードの修正が必要になるようです。
Apacheを含むHTTPアダプタのソースファイルは,

NEXT_ROOT\Developer\Examples\WebObjects\Source\Adaptors
の下に存在します。なお「NEXT_ROOT」はデフォルトで「C:\Apple」になります。
※Apache2.xに対応させたHTTPアダプタを千明社が公開しています。



■関連情報
マイクロソフト:[Windows Server 2003][IIS 6.x]
Appleサポート:WebObjects 互換性ガイド
ADC:WebObjectsのWindows及びSolarisへのインストールガイド
Linuxへのインストール方法(英文)
WebObjectsメーリングリスト過去ログ(テクノロジックアート)
WebObjects:[日本語技術マニュアル][開発と運用について][ADC Tools][サポート][製品紹介]

■関連書籍をAmazonで検索:[WebObjects 和書 洋書][Windows Server 2003][IIS 6.0]
Windows Server 2003 実践ガイド

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ ネットワーク・SEへ にほんブログ村 IT技術ブログ Webサイト構築へ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。
▼WindowsでWebObjects運用[その1][その2][その3][その4][その5]
ノートンシリーズ新登場バナーソニーストア

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

ココログ入会でメールが受け取れなかった話

ココログに新規入会するとき,こちらのメールアドレスを登録する訳ですが,
そのメールアドレスを当初会社のアドレスで登録しようとしていました。

ココログへの登録がひととおり完了したあとで設定画面を見て回ったところ,
「コントロールパネル」の「概要」で登録したメールアドレスを見ることができますが,
表示されたメールアドレスのドメイン部分(@から後ろ)だけが「nifty.com」に書き換わって
全く別のメールアドレスになってしまっている…!!
ココログに入会したら,入会ありがとうメールとか送ってるのかなぁ?
もしそうだったらワタクシの入会メールは全然別の人が受け取っていることになるのか?
で,いろいろすったもんだして,結局手持ちの「@nifty.com」のアドレスに変更完了。

そのあと,自分が管理している会社のサーバ(Mac OS X Server)のメールログを確認。
すると,app.cocolog-nifty.comがこちらにメールを出そうとして,エラーコード450で弾かれているではないか。
しかしなんで弾いているのか?と調べてみて以下のことがわかりました。

うちのメールサーバ(Postfix)は接続してくるクライアントサーバに対してDNS逆引きチェックを行う設定にしています。
これは具体的には以下のチェックが行われます。
1)クライアントサーバのIPアドレスをDNSで逆引きして,ホスト名が得られるか確認する。
2)得られたホスト名をDNSで正引きしてIPアドレスを取得し,クライアントサーバのIPアドレスと等しいか確認する。

このチェックに対して,cocologのサーバは以下のような結果になりました。
1)クライアントサーバのIPアドレス「210.131.5.9」を逆引きすると「app.cocolog-nifty.com」。
2)「app.cocolog-nifty.com」を正引きすると「210.131.5.22」→あれえ?

なんだか,見てはいけないものを見てしまったのかな?(笑)

このcocolog-nifty.comからのメール,450で弾いているため何度も再送を試みているので,
サーバの設定で一時的に上記チェックをはずして受け取ってみると,内容は「メールアドレス変更の確認」
…あぁそういえば,すったもんだの間にそんなこともしたっけ。入会ありがとうメールはやはり闇の中?

目立つ力 (小学館101新書 49)

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


Bose QuietComfort 25ノートンシリーズ新登場バナー

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

まずは口上

職業プログラマしてます。
ここでは,自分がもっている技術情報やノウハウを,できる範囲で公開していきたいと思っています。
一応プログラマですが,最近はサーバの管理もやっているので,そっちの話題も出ると思います。
いまのところの持ちネタとしては,

・Mac OS X Server サーバ管理
・WebObjectsプログラミング&運用
・Javaプログラミング
・MySQLセットアップ

といったところになると思います。

にほんブログ村 IT技術ブログへ 人気ブログランキングへ


アフィリエイトならリンクシェア

|

トップページ | 2008年2月 »