2011年4月14日木曜日

【CrystalReport】.setDataSourceでレスポンス遅延発生2

以前あげていた記事の続き。

他作業で手があかなかったので、別の人に調査をしてもらった。
どうにもネットワークが絡んでいるようなので、パケット解析してもらったところ、以下が原因と判明。

■原因
CrystalReportのコンポーネントをロードする際に、証明書が取り消されていないかどうかの確認をしようとして
インターネット上のサイトへ接続を試みているが、サイトアドレスの名前解決が出来ずタイムアウトが発生し
タイムアウトするまでの時間がレスポンス遅延となっている。

■解決方法
下記2種類のうちいずれか

○方法1
 マシン自体への設定。

 インターネットオプションの設定を変更する
 コントロールパネル⇒インターネットオプション⇒詳細設定タブ
 →「発行元証明書の取り消しを確認する」チェックをオフ

○方法2
 アプリケーション個別の設定。

 帳票を作成するexeに対応する設定ファイルを作成し、
 そのexeから証明書の取り消し確認を行わないようにする。
 ・ファイル名は「アプリケーションID.exe.config」とし、exeと同じフォルダに置く
 ・exe毎に設定ファイルが必要
 ・中身は同じでよい
 ・ファイル内容

<configuration>
<runtime>
<generatePublisherEvidence enabled="false"/>
</runtime>
</configuration>


同じようなことで困ってる人がたくさんいそうなのであげときます。

【Java】セッションタイムアウトのイベントを拾う


拙い知識の中では、セッションタイムアウトのイベントを拾うことはできないと認識していた。
が、よくよく調べてみると、Servletの2.3から実装されていました。

○HttpSessionListenerインターフェースクラス
・セッション生成、及びセッション破棄のタイミングでイベントを拾える。
・インターフェースクラスなので、実体クラスを作ってあげればOK。

http://java.sun.com/j2ee/sdk_1.3/ja/techdocs/api/javax/servlet/http/HttpSessionListener.html