JBoss AS 5.1GAをWindowsにインストール
mabushiisign
眩しいサインを見ただろう
データベースサーバをVMで稼働させている際、しばらくするとVMのリソース割り当てが下がってしまい、DBMSへの接続に時間がかかってしまい、Javaのバッチ処理がコネクションタイムアウトが発生しこけてしまう事態が発生しました。
Javaのバッチプログラムは、Spirng + Apache CommonsのDBCPを使用しています。
applicationContext.xmlには以下のような記述していました。
<bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value></property>
<property name="url"><value>jdbc:sqlserver://192.168.0.12\sqlexpress:1433;databaseName=db;</value></property>
<property name="username"><value>dbuser</value></property>
<property name="password"><value>dbpass</value></property>
<property name="initialSize"><value>10</value></property>
<property name="maxIdle"><value>10</value></property>
<property name="defaultAutoCommit"><value>True</value></property>
</bean>
この場合、タイムアウトはSQL Serverのデフォルトで15秒となります。
http://msdn.microsoft.com/ja-jp/library/ms378988.aspx
では、同じようにpropertyに loginTimeout を設定すると Exception が発生します。
BasicDataSourceのJavadocを参照すると、setLoginTimeoutにはBasicDataSource does NOT support this method.と記載されています。
ここで諦めかけたのですが、urlで指定すればいいのではないかと思い試したところ
無事に設定することができました。
<property name="url"><value>jdbc:sqlserver://192.168.0.12\sqlexpress:1433;databaseName=db;loginTimeout=60;</value></property>
URLにプロパティで設定できることは、MSの以下のページにも記載されていました。
http://msdn.microsoft.com/ja-jp/library/ms378428(v=sql.105).aspx
最後に、SQL Serverの勉強にオススメの書籍を紹介します。