Java(Seasar2)の「S2JDBC」は、DBのアクセスとJavaオブジェクトの変換を行うO/Rマッピングのフレームワーク。
各データベースへの接続設定方法は、設定ファイルに記載例があるので、それを流用すればOK。
以下の代表的なデータベースの設定例がある。
- Oracle
- PostgreSQL
- MySQL
- DB2
- Microsoft SQL Server など
今回は、「SQL Server」。
設定ファイルに記述する接続文字列で苦労したので、忘れぬようメモ。
なお、今回のバージョンは以下です。
- SQL Server Standard 2008 R2
「s2jdbc.dicon」ファイル
今回のSQL Serverは「2008」なので、MS SQL Server (2005以降)の「mssql2005Dialect」を設定する。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<include path="jdbc.dicon"/>
<include path="s2jdbc-internal.dicon"/>
<component name="jdbcManager" class="org.seasar.extension.jdbc.manager.JdbcManagerImpl">
<property name="maxRows">0</property>
<property name="fetchSize">0</property>
<property name="queryTimeout">0</property>
<property name="dialect">mssql2005Dialect</property>
</component>
</components>
「jdbc.dicon」ファイル
ここで、データベース接続文字列を書く。
今回の場合は、データベースは名前付きインスタンス。
Microsoft公式サイトにあるように「サーバー名\\インスタンス名;」(「\」2つでエスケープシーケンス)としたが、「Unknown server host name ‘サーバー名\インスタンス名’.」というエラーとなる。
最終的に、「サーバー名;instance=インスタンス名;」とすることで無事に接続できた。
こんな感じです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components namespace="jdbc">
<include path="jta.dicon"/>
<!-- for SQLServer -->
<component name="xaDataSource"
class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
<property name="driverClassName">
"net.sourceforge.jtds.jdbc.Driver"
</property>
<property name="URL">
"jdbc:jtds:sqlserver://サーバー名;instance=インスタンス名;databaseName=データベース名;"
</property>
<property name="user">"ユーザー"</property>
<property name="password">"パスワード"</property>
</component>
<component name="connectionPool"
class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
<property name="timeout">600</property>
<property name="maxPoolSize">10</property>
<property name="allowLocalTx">true</property>
<destroyMethod name="close"/>
</component>
<component name="DataSource"
class="org.seasar.extension.dbcp.impl.DataSourceImpl"
/>
</components>
SQL Serverのインスタンス名の確認
今回は名前付きインスタンスだったので、SQL Serverのインスタンス名の確認方法も。
「SQL Server Management Studio」⇒サーバーへログイン⇒左側の「オブジェクトエクスプローラ」⇒対象のデータベースサーバ上で右クリック⇒「プロパティ」で「サーバーのプロパティ」を開く。
左側の「接続」⇒「接続のプロパティを表示します」で「接続プロパティ」を開く。
「製品」⇒「インスタンス名」に名前付きインスタンスの場合、インスタンス名が表示される。



コメント