Mantis - Resin
Viewing Issue Advanced Details
1034 minor always 04-03-06 11:08 04-10-06 16:14
ferg  
ferg  
urgent  
closed 3.0.18  
fixed  
none    
none 3.0.19  
0001034: JMS with oracle
(rep by Bryan Davis)

I've been attempting to use resin 3.0.18 jms using an oracle datastore and ran into a number of issues.
 
First, creating the consumer fails with oracle exceptions.
 
[14:20:46.337] com.caucho.loader.StartRuntimeException: com.caucho.jms.JMSExceptionWrapper: ORA-01400: cannot insert NULL into ("RCITRIAL"."RESIN_JMS_CONSUMER"."S_ID")
[14:20:46.337]
[14:20:46.337] at com.caucho.loader.EnvironmentClassLoader.start(EnvironmentClassLoader.java:325)
[14:20:46.337] at com.caucho.server.webapp.Application.start(Application.java:1578)
[14:20:46.337] at com.caucho.server.deploy.DeployController.startImpl(DeployController.java:587)
[14:20:46.337] at com.caucho.server.deploy.StartAutoRedeployAutoStrategy.startOnInit(StartAutoRedeployAutoStrategy.java:72)
[14:20:46.337] at com.caucho.server.deploy.DeployController.startOnInit(DeployController.java:475)
[14:20:46.337] at com.caucho.server.deploy.DeployContainer.start(DeployContainer.java:158)
[14:20:46.337] at com.caucho.server.webapp.ApplicationContainer.start(ApplicationContainer.java:651)
[14:20:46.337] at com.caucho.server.host.Host.start(Host.java:385)
[14:20:46.337] at com.caucho.server.deploy.DeployController.startImpl(DeployController.java:587)
[14:20:46.337] at com.caucho.server.deploy.StartAutoRedeployAutoStrategy.startOnInit(StartAutoRedeployAutoStrategy.java:72)
[14:20:46.337] at com.caucho.server.deploy.DeployController.startOnInit(DeployController.java:475)
[14:20:46.337] at com.caucho.server.deploy.DeployContainer.start(DeployContainer.java:158)
[14:20:46.337] at com.caucho.server.host.HostContainer.start(HostContainer.java:467)
[14:20:46.337] at com.caucho.server.resin.ServletServer.start(ServletServer.java:945)
[14:20:46.337] at com.caucho.server.deploy.DeployController.startImpl(DeployController.java:587)
[14:20:46.337] at com.caucho.server.deploy.AbstractDeployControllerStrategy.start(AbstractDeployControllerStrategy.java:56)
[14:20:46.337] at com.caucho.server.deploy.DeployController.start(DeployController.java:483)
[14:20:46.337] at com.caucho.server.resin.ResinServer.start(ResinServer.java:478)
[14:20:46.337] at com.caucho.server.resin.Resin.init(Resin.java)
[14:20:46.337] at com.caucho.server.resin.Resin.main(Resin.java:623)
[14:20:46.337] Caused by: com.caucho.jms.JMSExceptionWrapper: ORA-01400: cannot insert NULL into ("RCITRIAL"."RESIN_JMS_CONSUMER"."S_ID")
[14:20:46.337]
[14:20:46.337] at com.caucho.jms.jdbc.JdbcTopicConsumer.createTopic(JdbcTopicConsumer.java:190)
[14:20:46.337] at com.caucho.jms.jdbc.JdbcTopicConsumer.<init>(JdbcTopicConsumer.java:107)
[14:20:46.337] at com.caucho.jms.jdbc.JdbcTopic.createConsumer(JdbcTopic.java:148)
[14:20:46.337] at com.caucho.jms.jdbc.JdbcTopic.createConsumer(JdbcTopic.java:81)
[14:20:46.337] at com.caucho.jms.session.SessionImpl.createConsumer(SessionImpl.java:378)
[14:20:46.337] at com.caucho.jms.session.SessionImpl.createConsumer(SessionImpl.java:359)
[14:20:46.337] at com.caucho.ejb.message.MessageServer$Consumer.start(MessageServer.java:235)
[14:20:46.337] at com.caucho.ejb.message.MessageServer.start(MessageServer.java:141)
[14:20:46.337] at com.caucho.ejb.EnvServerManager.start(EnvServerManager.java:387)
[14:20:46.337] at com.caucho.ejb.EnvServerManager.environmentStart(EnvServerManager.java:510)
[14:20:46.337] at com.caucho.loader.EnvironmentClassLoader.start(EnvironmentClassLoader.java:318)
[14:20:46.337] ... 19 more
[14:20:46.337] Caused by: java.sql.SQLException: ORA-01400: cannot insert NULL into ("RCITRIAL"."RESIN_JMS_CONSUMER"."S_ID")
[14:20:46.337]
[14:20:46.337] at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
[14:20:46.337] at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
[14:20:46.337] at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
[14:20:46.337] at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
[14:20:46.337] at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
[14:20:46.337] at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
[14:20:46.337] at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
[14:20:46.337] at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
[14:20:46.337] at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3368)
[14:20:46.337] at com.caucho.sql.UserPreparedStatement.executeUpdate(UserPreparedStatement.java:117)
[14:20:46.337] at com.caucho.sql.UserPreparedStatement.executeUpdate(UserPreparedStatement.java:117)
[14:20:46.337] at com.caucho.jms.jdbc.JdbcTopicConsumer.createTopic(JdbcTopicConsumer.java:174)
[14:20:46.337] ... 29 more
 
 
 
 
  The work around for this problem is to modify JdbcTopic to include the topic name so that section of code doesn't get used (which is probably the correct case anyway). Changing line 148/149 of JdbcTopicConsumer.java to be
        return new JdbcTopicConsumer(session, selector, _jdbcManager, this, noLocal, this.getName());
 rather than
        return new JdbcTopicConsumer(session, selector, _jdbcManager, this, noLocal);
 
causes the topic to be created with the appropriate name.
 
 
Second, you get really unpredictable results if the datasource isn't specified in the connection factory, but it is specified in the topic. The messages seem to just hang in the queue table forever and never get received. Some more dire warnings in the documentation about this would be appreciated.
 

Notes
(0001078)
ferg   
04-10-06 16:14   
ejb/6a9a