上次配置的是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一切正常。
这里只为了记录排除错误的方法,遇到问题,试下这个思路也许问题就解决了。