2011-12-22 9 views
1

私はTimothy PerrettのLift In Actionをやっていますが、この本はDB接続で少し混乱しています。Scala Lift postgresqlのデータベース接続

はここのリンクです: https://github.com/timperrett/lift-in-action/blob/master/chapter-3/src/main/scala/bootstrap/liftweb/Boot.scala

紛らわしい部分、JNDIです。私はJavaのバックグラウンドを持っていないので、ちょっと混乱していて、プロファイルも混乱しています。それは設定ファイルやiniファイルと少し似ていますが、私は理解していないことがまだたくさんあります。

私は別のチュートリアル見つけました:データベース接続

これは少し異なっているの設定8.1.2 @ http://exploring.liftweb.net/master/index-8.html を。私はPHPのバックグラウンドから来ています。

違いは何ですか?そして、2つの異なる方法の間に利点はありますか?また、2番目の方法は、接続が確立されていないかどうかをチェックしません。どのようにチェックするのですか?またはフェールオーバーのベストプラクティスを示すために提供できるコードの断片がありますか?

oh!ロードシャークパターンは、1つのdb接続だけが使用権を持つことを確認するために使用されますか?

ありがとうございます。

編集: DBVendorオブジェクトのnewConnection上のデータベースオブジェクトには、接続の確認が確立されているかどうかが考えられます。私は正しいですか?

答えて

4

TL; DR

はの形で./src/main/resources/default.propsでデータベース構成を置く:もちろん

db.class=org.postgresql.Driver 
db.url=jdbc:postgresql:[//host[:port]]/database 
db.user=user 
db.pass=password 

、あなたのデータベースの正しい値を提供する必要があります。

長い話

JNDIが混乱している場合、あなたは今のところ、それを無視することができます。プロダクションアプリケーションをアプリケーションサーバ上で実行するように設定する場合に便利ですが、必要ではない場合に便利です。part of Java EEです。

Propertiesは、設定処理のための古くからのJavaのメソッドです。プロパティファイル(通常は.propsまたは.properties)は、名前と値のペアの単なるリストです。

Liftは、さまざまな環境で異なるプロパティファイルを便利に提供するためにPropsオブジェクトを提供します。 The wikiは、どのように動作するかについての優れた記述を持っていますが、基本的に実行モード(テスト、ステージング、プロダクションなど)、ホスト名とユーザー名の任意の組み合わせに対して異なるプロパティを指定できます。今

、ティムPerrettのコード打ち破る:JNDI接続が利用可能かどうか

  1. チェックを。アプリケーションサーバーを実行してそれを設定しない限り、それは実行されません。そうでなければ大したことではありません。
  2. JNDIが存在しない場合は、Databaseオブジェクトを使用してデータソースを構成します。
  3. Databaseオブジェクトは、実行中のシステムに最も一致するファイル.propsからLiftのPropsオブジェクトを使用して値をロードします。 default.propsのみを指定した場合は、その値が使用されます。
  4. プロパティファイルがない場合、またはデータベース設定キーが含まれていない場合、openOrにはan H2 databaseを使用するためのデフォルト値が提供されます。

リフトはすでに独自の接続管理を行っています。これは通常、スレッドごとに異なるデータベース接続を意味します。接続が確立できない場合は、データアクセスコードからSQLExceptionが得られます。

関連する問題