2006年03月11日

Live HTTP Headers

FireFoxのプラグイン(というのでしょうか?)のLive HTTP Headersをインストールしました。
前から存在は知っていたのですが、今までは必要性がそれほど高くなかったので入れていませんでした。

本家サイト
日本語サイト


最新版は、0.12(日本語版は0.10)です。FireFoxの1.0RC1から1.5まで対応済み。


さて何をするものなのか?そしてWebObjectsとどんな関係があるのか?


要するに、Webブラウザとサーバとのやり取りを記録してみせましょうというものです。

こんな感じ(このページを表示した結果);
header.pngheader2.png


WebObjectsでアプリケーションを開発していると、表示結果が期待したものではない場合があり、デバッグとして様々な方法を行います。なかでもブラウザとHTTPサーバーのやりとりがどうなっているのかを知りたい場合があります。そんなときにブラウザ側で簡単にヘッダーを見るときにこのツールは役立ちます。


これまでは、サーバー側で見ていたのですが、たまたまサーバーの置いてあるネットワークのファイアウォール外で試験をしなければならない状況になったので、これを入れてみました。

posted by 永遠製作所 at 12:17| 東京 🌁| Comment(0) | TrackBack(2) | WebObjects | このブログの読者になる | 更新情報をチェックする

2005年07月02日

失敗:ソースコードの変更が反映されない!

先日、WebObjectsのアプリケーションを開発中に不可解な現象のためちょっと時間をとられてしまった失敗です。

画面の変更、ソースコードの修正などを行って、いつものようにコマンド+Rでビルド&実行しました。そして変更した画面のテストを行うと、うまく行きません。

実は関係ないのですが、ここでのエラーはPopupMenuでEntity一覧をプリフェッチして表示する部分ででています。新規追加なんですが、モデル中でフェッチスペックを作成してそれを使用するようにしているのですが、それが見つからないというエラーです。もっと別のエラーなら問題に早く気がついたんでしょうけど、こういう変更が反映されていないのはまたEOModelerかWOBuilderのバグなんだろうと、最初にへんな先入観を持ってしまったのが間違いでした。

まず、WOBuilderやEOModelerを終了して再起動したり、ターゲットをclean allしたりシステム自体を再起動したりといろいろやったのですが、まったく変化なし。しかたなく仮にフェッチスペックなしでやってみることにしました。

すると今度は、Entityへのアクセスで対応するアクセッサメソッドがないというエラーに変わりました。このあたりからなんだかおかしいなあと思い始めます。で、なんどかコードを変更してデバッグ文などを挿入しているうちに、プログラムへの変更自体が反映されていないのだと気がつきました。

そしてようやくここにきて、ビルドしているプログラムと実行しているプログラムは違うものなのではないか?という疑問を抱くことになりました。そうです、前日にアプリケーションをリリースするためにビルドスタイルをDeploymentに設定していたのを思い出しました。ビルドスタイルをDevelopmentに戻して再実行すると問題なく(バグはありましたが(^^;)変更が反映されました。

ここで気がつくのが遅れたことの原因のひとつに、画面自体は変更が反映されていたということがあります。WebObjectsの開発環境では実行中にWOファイルをオンザフライに変更してデバッグできる特徴があります。このためビルドしたものとは違う、最新のものが常に使用されていたようです。一方実行コードのほうはデバッグ実行では常にDevelopmentのものが使われるようです。XCodeになってからビルドスタイルがインストール後の状態ではプロジェクトウインドウに表示されないことも、気がつくのを遅されました。

教訓:ビルドターゲット/スタイルの確認を忘れずに。
posted by 永遠製作所 at 17:14| 東京 ☁| Comment(0) | TrackBack(0) | WebObjects | このブログの読者になる | 更新情報をチェックする

2005年05月17日

"["を含むlike検索で例外発生

データベースからのフェッチ済みEOに対して、検索を行ったときにWebObjectsの問題と思われる例外が発生したので報告します。データは EOEditingContext.objectsForEntityName()等で NSArray に取得済みとします。ここで以下のように検索を行うと、例外が発生します。ここで、nameという文字列属性を持つ物とします。


NSArray eoArray =
session().defaultEditingContext().objectsForEntityName("First")
EOQualifier qual = new EOKeyValueQualifier( "name",
EOQualifier.QualifierOperatorCaseInsensitiveLike, "*ABC[*" );
NSArray resultArray =
EOQualifier.filteredArrayWithQualifier( eoArray, qual );


エラーは以下のようなもの


Error:
java.lang.IllegalArgumentException: Bad pattern *ABC[*for qualifier
Reason:
Bad pattern *ABC[*for qualifier

java.lang.IllegalArgumentException: Bad pattern *ABC[*for qualifier
at
com.webobjects.foundation._NSStringUtilities._bracketedStringFromPatternAnalyzer
(_NSStringUtilities.java:740)
at
com.webobjects.foundation._NSStringUtilities.stringMatchesPattern
(_NSStringUtilities.java:785)
at
com.webobjects.eocontrol.EOKeyValueQualifier.evaluateWithObject
(EOKeyValueQualifier.java:141)
at
com.webobjects.eocontrol.EOAndQualifier.evaluateWithObject
(EOAndQualifier.java:96)
at
com.webobjects.eocontrol.EOQualifier.filteredArrayWithQualifier
(EOQualifier.java:632)
:
:


つまり、[はなんらかのパターンマッチングのために使われていて、それが閉じられていないのが原因のようだ。"[]"と閉じると例外は発生しない。"\["と円マークでエスケープしても例外発生。[を含む文字列を検索できていない。

この方法はメモリー上にフェッチした後で検索するいずれの方法でも同じようだ。確認したのは WODisplayGroupのsetQualifier()でEOQualiferを設定した場合。

では、解決方法は?今のところ、文字列をlike検索する場合、EOEditingContext上での操作を諦める他ないと思われる。ただし、同じ文字列をDBに対して行う場合にはこれはうまくゆく。


EOQualifier qual = new EOKeyValueQualifier( "name",
EOQualifier.QualifierOperatorCaseInsensitiveLike, "*ABC[*" );
NSArray resultArray =
session().defaultEditingContext().objectsWithFetchSpecification(
new EOFetchSpecification( "First", qual, null ) );


Mac OS X 10.3.9+WO5.2.3
posted by 永遠製作所 at 02:13| 東京 ☁| Comment(0) | TrackBack(0) | WebObjects | このブログの読者になる | 更新情報をチェックする

2005年05月15日

ログファイルの場所

ひさしぶりに新しいサーバーでWebObjectsのアプリケーションをデプロイした。が、なぜかログファイルが作成されない。なんでかなぁと、色々調べたがわからない。他のサーバーと同じようにしているのに、このサーバーでだけなぜだか書き出されない。

書き出しフォルダのパーミッションが原因でした。他のサーバーでは別パーティションにログ専用フォルダを作成していたのですが、今回のサーバーでは、正式運用ではなくβ版の試験運用だったので、特定ユーザー(仮にeienとします)の書類フォルダにログフォルダを作成して書き出そうとしていました。

が、そこは eien さんしか読み書きできないフォルダなので、appserverユーザーで実行されている WebObjects アプリケーションはファイルを作成できなかったのです。ひとまず、ログフォルダをすべてのユーザーに書き込み可にしてしのぎました。

もっと早く気がつくべきだったんですが、ちょっと普段使わないlog4jを使ったので、それに関連して何か設定があるのかとそっち方面を色々調べていたので、基本的原因については考えが及ばず、時間がかかってしまいました。
posted by 永遠製作所 at 01:23| 東京 🌁| Comment(0) | TrackBack(0) | WebObjects | このブログの読者になる | 更新情報をチェックする

2005年05月06日

WebObjects 5.2.4 Updater公開

WebObjects 5.2.4 Updaterが正式公開されました。


About the WebObjects 5.2.4 Update


これによると、
・524はXCode2向け(Mac OS X 10.4向け)
・524はJava 1.4.2向け
・OpenBase SQL on 10.4で使える(OB8がバンドル)
・WOBuilderのバグ等をFIX
ということです。

524 updaterにはDeveloper版とDeployment版があるから注意とのこと。10.4にWO52をInstallした場合には、Developer版を当てる事。両方は必要ない。

updaterは、10.4用だけでなくSolaris, Windows用にも出ている。

5.2.4 Deploymentでは、Server AdminツールでWOの起動などを制御することができるようになっているようです。が、未入手なので具体的な動作については未確認。



ダウンロード

posted by 永遠製作所 at 00:51| 東京 ☁| Comment(0) | TrackBack(0) | WebObjects | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。