We have developed our back end application using EJB 3.0 running on JBoss 4.0.3SP1. The problem is that when multiple jboss servers are connected to the same database for the EJB 3.0 application, the data can be read only from the server that creates it. When the same code executes on the other server to read the EJBs following exception is thrown:
2006-05-29 13:19:25,858 INFO [STDOUT] VCCSecurityQueryWS.getUserRoles : user <vccuser1>
2006-05-29 13:19:25,869 DEBUG [org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory] Using properties: {user=vccum, password=--hidden--}
2006-05-29 13:19:26,002 WARN [org.hibernate.util.JDBCExceptionReporter] SQL Error: 1722, SQLState: 42000
2006-05-29 13:19:26,003 ERROR [org.hibernate.util.JDBCExceptionReporter] ORA-01722: invalid number
2006-05-29 13:19:26,004 INFO [STDOUT] User with id<vccuser1> could not be loaded, Error :
could not initialize a collection: [com.eds.autoeng.vcc.security.ejb.VCCUser.userCustomerRoles#4010]
2006-05-29 13:19:26,004 INFO [STDOUT]
findUserByUserId[vccuser1] - executed in 136 milliseconds !
The above error occurs when we try to load an EJB3 instance from database from a jboss server that did not create the EJB originally.
The same EJB3 instance is loaded succesfully by the jboss server that originally created the object:
2006-05-29 13:25:58,083 DEBUG [org.jboss.webservice.server.InvokerProviderJSE] Invoke JSE: public abstract java.lang.String[] com.eds.autoeng.vcc.security.ws.VCCSecurityQuery.getUserRights(java.lang.String) throws java.rmi.RemoteException
2006-05-29 13:25:58,092 INFO [STDOUT] getUserRights<vccuser1>
2006-05-29 13:25:58,860 INFO [STDOUT]
findUserByUserId[vccuser1] - executed in 766 milliseconds !
2006-05-29 13:25:59,303 INFO [STDOUT]
findUserByUserId[vccuser1] - executed in 443 milliseconds !
We deploy exactly the same application archive file on the all the jboss servers in the dev environment and all servers are configured identically.
Immediate help in getting this issue resolved will be greatly appreciated.