I am getting the "User null is NOT authenticated" exception in JBoss after migrating from HSQLDB to Mysql for JBoss Messaging.
Configuration details:
JBoss Server 5.1 (4 node cluster)
Mysql 5.5
Heres what i did to migrate from HSQLDB to Mysql:
1. Copied the Mysql JDBC driver (mysql-connector-java-5.1.1.4-bin) to the lib folder of the nodes in JBoss.
2. Replacde the file hsqldb-ds.xml with mysql-ds.xml in the deploy folder in JBoss.
3. Replaced the file hsqldb-persistence-service.xml with mysqldb-persistence-service.xml in the messaging folder under deploy in JBoss.
4. Updated the file mysql-ds.xml to have the following:
5. Uncommented the "guest=guest" entry in the messaging-users file.
6. Added the following in the login-config file present in jboss/conf folder:
7. Added a reference to the MySqlDbRealm in the mysql-ds file by adding the following:
<security-domain>MySqlDbRealm</security-domain>
8. Ensured that the <type-mapping>mySQL</type-mapping> property vale present in mysql-ds.xml file is the same as the <type-mapping> property in standardjbosscmp-jdbc.xml file.
I am guessing, i am missing some configuration which is causing the issue. Could someone educate me on what needs to be updated to fix this issue. I see a few people have the same issue, but was not able to find a concrete solution or a pointer to the root cause of the issue.
Assuming you are using the default server instance in JBoss, there should be a file called messaging-jboss-beans.xml under $JBOSS_HOME/server/default/deploy/messaging. In this file, there is the default configuration for messaging. Something like:
This is pointing at the default datasource which assumes to be HSQLDB but which you have now changed to point at your MySQL database. I am assuming the user 'guest' (and probably the tables JBM_USER and JBM_ROLE) cannot be found.
Try turning on debug logging and check the logs just before the exception occurs.
I checked the Mysql Database and saw that both the tables were present and also the user guest was present in those tables, below is the content of messaging-jboss-beans.xml related to messaging.
i finally managed to fix the issue and following is what we did:
Added the below given snippet to the mysql-ds.xml file which does a background check on the connection pool and ensures that there are no stale connection objects in the pool. Apparently, it was the stale connection objects which caused the issue.