上次配置的是Oracle 資料庫幾番周折之後總算成功告捷,這次換成MSSQL2005竟然又一次出錯。難道配置有差別,還是我在網上下的解壓包不是原版的。
查找資料得知需要進行以下配置:
1. MSSQL2005資料庫驅動sqljdbc4.jar放在:jboss根目錄/jboss-5.1.0.GA/server/default/lib
2. 現在jboss根目錄/docs/examples/jca/ 拷貝 mssql-ds.xml 到 jboss根目錄/server/default/deploy 下
3. 修改mssql-ds.xml檔案
<jndi-name>LOG你的連接配接池名</jndi-name>
<user-name>使用者名</user-name>
<password>密碼</password>
此檔案的<type-mapping>MSSQL</type-mapping>可以不變,但是必須與standardjbosscmp-jdbc.xml 的<datasource-mapping>MSSQL</datasource-mapping>保持一緻。
4. 修改檔案jboss根目錄/server/default/conf/standardjbosscmp-jdbc.xml
<datasource>java:/ LOG你的連接配接池名</datasource>
把<datasource-mapping>MSSQL</datasource-mapping>的注釋去掉
5. 修改檔案jboss根目錄/server/default/conf/login-config.xml
<application-policy name="HsqlDbRealm">
<authentication>
<login-module code="org.jboss.resource.security.ConfiguredIdentityLoginModule"
flag="required">
<module-option name="principal">資料庫名</module-option>
<module-option name="userName">使用者名</module-option>
<module-option name="password">密碼</module-option>
<module-option name="managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name= LOG你的連接配接池名</module-option>
</login-module>
</authentication>
</application-policy>
經過以上配置基本完成了,啟動JBoss出現以下異常。
10:37:57,968 INFO [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=DefaultDS' to JNDI name 'java:DefaultDS'
10:37:58,078 ERROR [AbstractPasswordCredentialLoginModule] The ConnectionManager mbean: jboss.jca:service=LocalTxCM,name= LOG你的連接配接池名specified in a ConfiguredIdentityLoginModule could not be found. ConnectionFactory will be unusable!
javax.management.InstanceNotFoundException: jboss.jca:service=LocalTxCM,name=LOGSYSTEM is not registered.
檢查錯誤資訊發現JNDI name 'java:DefaultDS' ,我先前明明已經修改了這個名字啊,怎麼會再次出現。查找檔案發現一個hsqldb-ds.xml 中<jndi-name>DefaultDS</jndi-name>,很顯然是它的原因。删除這個多餘的配置檔案,啟動JBoss一切正常。
這裡隻為了記錄排除錯誤的方法,遇到問題,試下這個思路也許問題就解決了。