忍者ブログ
全くIT系ではない製造業の社員がイントラ上でColdFusionと格闘。システム構築を外部委託するとき「できればColdFusionでお願いします」と頼むのだが・・・・
[55] [54] [53] [52] [51] [50] [49] [48] [47] [46] [45]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

データーベースを停止する直前になって、ColdFusionのシステムにエラー処理を仕込みました。
やっぱり今週は時間がとれなかった・・・・

さて、

エラー処理といっても、基本中の基本と思われる、データーベースが停止しているときの処理です。
ColdFusion MX7 なので、Application.cfcでやるのが王道でしょう。

拡張子 cfc は、コールドフュージョンコンポーネントです。その中でもApplication.cfcだけは特別扱いのコンポーネント。どの辺が特別かというと、どのcfmを実行するときでも必ず読み込まれるのです。(そのcfmと同一ディレクトリか上位ディレクトリにApplication.cfcが存在すれば ですが) あ、それとApplicationのAは必ず大文字で。

必ず読み込まれるので、そこで<cfquery>を発行して、エラーが出ない事を確認させれば、全部のcfmにチェックするコードを入れる手間は省けるわけです。

ColdFusionでセッション管理をする場合にもApplication.cfcで定義するのですが、ちょっとそれは置いといて、エラー処理について。

======== Application.cfc のソース===========

<cfcomponent>
 <cfprocessingdirective pageencoding="UTF-8">
  <cfscript>
    This.name="genba_ph";
    This.clientManagement="False";
    This.sessionmanagement="True";
    This.Sessiontimeout="#createtimespan(0,0,60,0)#";
  </cfscript>

 <cffunction name="onApplicationStart">
  <!---アプリケーション変数設定--->
 </cffunction>

 <cffunction name="onRequestStart">
  
<!--- データーベース確認 --->
   <cftry>
     <cfquery name="check" datasource="tip">
       SELECT COUNT(HONSTNCD) FROM HONSITENMST
     </cfquery>
   <cfcatch type="database">
    <cfoutput><h1>データーベースが停止しているため、システムは現在利用できません</h1></cfoutput>
    <cfreturn false>
   </cfcatch>
  </cftry>
 
 <!--- ログインチェック --->
  <!--- session.login があればログイン済
   無ければクッキーを調べる。cookie.shimei_cdはポータルと同じクッキー --->
 </cffunction>

 <cffunction name="onSessionStart">
   <!---セッション開始をログ記録--->
 </cffunction>
 
 <cffunction name="onSessionEnd">
  
<!---ディレクトリを作成したなら消す--->
 </cffunction>

</cfcomponent>

====================================

Application.cfc は、だいたいこんな構成が多いんだと思います。
エラー処理をしてるのは、<!---データーベース確認--->と書いてあるところ。
<cftry>
 エラーが発生する可能性がある処理(クエリ発行)
 <cfcatch>
  発生しちゃったときの処理
 </cfcatch>
</cftry>

このパターンが普通ですね。

ところでApplication.cfc は、ColdFusionMX7から使えるようになったコンポーネント。以前はApplication.cfmでした。
cfcになってから、必ず読み込まれるだけでなく、<cffunction name="どんなときに実行する?">というファンクションがつきました。

<cffunction name="onApplicationStart">は、アプリケーションが開始したとき。

<cffunction name="onRequestStart">は、cfmページが呼ばれたときに最初に必ず。

<cffunction name="onRequestEnd">は、cfmページの最後に必ず。

<cffunction name="onSessionStart">は、セッションが開始したときに必ず。

<cffunction name="onSessionEnd">は、セッションが終了したときに必ず。

今回のデーターベースの稼働確認は、ページを表示する時に毎回チェックさせてます。
その他、注釈のような処理をさせたりしてます。

さて、明日はシステムの引っ越しです。
無事引っ越せるか、結構不安・・・・

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
ブログ内検索
プロフィール
HN:
CFIF
性別:
男性
自己紹介:
もっと日本でもColdFusionが広まって欲しいです。

情報通信を生業としない企業の、システム系でもない普通の社員なので、 ColdFusionは独学。参考書が少ないのがツライです・・・・なんだかんだ、ColdFusion4.xのシリウス時代から7年くらいのおつきあい?リンコムNextのソースが教科書かも。

外注するときはよく「できればColdFusionで・・・・」とお願いするのですが、ほとんどの場合「えっ!?」と驚かれてしまい、「SEのアサインが・・・」などと営業さんが困ってしまうことが多くて悲しいです。
ちょっとしたものなら自分でシステム構築しちゃいますが、一人でやるには時間が足りませんね・・・

FlashRemotingとかもやりますが、Flexには手を出してません。
と、最初の頃書きましたが、ついにFlexに手を出しました。Flex1.5はイマイチわかりませんでしたが、Flex2は別物ですね。これで6万円でイインデスカ?
そしてFlex2とColdFusionの組み合わせなら無敵な気がしますよ。ほんとに。
最新トラックバック
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
なかのひと
忍者ブログ [PR]