[ 
https://issues.apache.org/jira/browse/TOMEE-233?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jean-Louis MONTEIRO resolved TOMEE-233.
---------------------------------------

    Resolution: Not A Problem
    
> Default JMS Persistence with hsql causes issue when restarting server
> ---------------------------------------------------------------------
>
>                 Key: TOMEE-233
>                 URL: https://issues.apache.org/jira/browse/TOMEE-233
>             Project: TomEE
>          Issue Type: Bug
>    Affects Versions: 1.0.0-beta-1, 1.0.0
>         Environment: Linux jschlt 3.0.0-21-generic-pae #35-Ubuntu SMP Fri May 
> 25 18:17:24 UTC 2012 i686 i686 i386 GNU/Linux
> java version "1.6.0_23"
> OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.2)
> OpenJDK Server VM (build 20.0-b11, mixed mode)
> TomEE plus 1.0.0
> Also occurs on 1.0.1 snapshot (06/07)
> and 1.1.0 snapshot (06/12)
>            Reporter: Jerald Schoudt
>
> I'm using tomee plus (I've tried 1.0.0 plus and 1.0.1 plus snashot from June 
> 7) and I'm seeing an issue.  
> I have a JMS queue in my application that I use to send/process textmessages 
> and if I shutdown/restart tomee while there are messages in the queue they 
> get persisted, but then when the server starts I get the following error and 
> the ActiveMQ JMS Broker fails to start. 
> WARNING: JDBC Failure: incompatible data type in conversion: from SQL type 
> OTHER to [B, value: instance of org.hsqldb.types.JavaObjectData 
> java.sql.SQLSyntaxErrorException: incompatible data type in conversion: from 
> SQL type OTHER to [B, value: instance of org.hsqldb.types.JavaObjectData 
>         at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
>         at org.hsqldb.jdbc.Util.throwError(Unknown Source) 
>         at org.hsqldb.jdbc.JDBCResultSet.getColumnInType(Unknown Source) 
>         at org.hsqldb.jdbc.JDBCResultSet.getBytes(Unknown Source) 
>         at 
> org.apache.commons.dbcp.DelegatingResultSet.getBytes(DelegatingResultSet.java:241)
>  
>         at 
> org.apache.commons.dbcp.DelegatingResultSet.getBytes(DelegatingResultSet.java:241)
>  
>         at 
> org.apache.activemq.store.jdbc.adapter.BytesJDBCAdapter.getBinaryData(BytesJDBCAdapter.java:38)
>  
>         at 
> org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter.doGetMessageById(DefaultJDBCAdapter.java:194)
>  
>         at 
> org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.getLastMessageBrokerSequenceId(JDBCPersistenceAdapter.java:234)
>  
>         at 
> org.apache.activemq.broker.region.DestinationFactoryImpl.getLastMessageBrokerSequenceId(DestinationFactoryImpl.java:145)
>  
>         at 
> org.apache.activemq.broker.region.RegionBroker.<init>(RegionBroker.java:122) 
>         at 
> org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:1833)
>  
>         at 
> org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:1824)
>  
>         at 
> org.apache.activemq.broker.BrokerService.createBroker(BrokerService.java:1781)
>  
>         at 
> org.apache.activemq.broker.BrokerService.getBroker(BrokerService.java:766) 
>         at 
> org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.start(JDBCPersistenceAdapter.java:296)
>  
>         at 
> org.apache.activemq.broker.BrokerService.start(BrokerService.java:493) 
>         at 
> org.apache.openejb.resource.activemq.ActiveMQ5Factory$1.run(ActiveMQ5Factory.java:126)
>  
> Caused by: org.hsqldb.HsqlException: incompatible data type in conversion: 
> from SQL type OTHER to [B, value: instance of org.hsqldb.types.JavaObjectData 
>         at org.hsqldb.error.Error.error(Unknown Source) 
>         at org.hsqldb.error.Error.error(Unknown Source) 
>         ... 16 more 
> Here's some sample code to reproduce the problem.  Put this class in an 
> otherwise empty web app: 
> package org.jschoudt.test; 
> import javax.annotation.Resource; 
> import javax.jms.Connection; 
> import javax.jms.ConnectionFactory; 
> import javax.jms.JMSException; 
> import javax.jms.Message; 
> import javax.jms.MessageProducer; 
> import javax.jms.Queue; 
> import javax.jms.Session; 
> import javax.servlet.ServletContextEvent; 
> import javax.servlet.ServletContextListener; 
> import javax.servlet.annotation.WebListener; 
> @WebListener 
> public class ConfigListener implements ServletContextListener { 
>         @Resource 
>         ConnectionFactory cf; 
>         @Resource(name = "somequeue") 
>         Queue queue; 
>         public ConfigListener() {} 
>         public void contextInitialized(ServletContextEvent event) { 
>                 Connection conn = null; 
>                 Session session = null; 
>                 MessageProducer messageProducer = null; 
>                 try { 
>                         conn = cf.createConnection(); 
>                         conn.start(); 
>                         session = conn.createSession(false, 
> Session.AUTO_ACKNOWLEDGE); 
>                         messageProducer = session.createProducer(queue); 
>                         Message m = 
> session.createTextMessage("{'foo':'bar'}"); 
>                         messageProducer.send(m); 
>                         event.getServletContext().log("Message sent"); 
>                 } catch (Exception e) { 
>                         event.getServletContext().log("Error sending 
> message", e); 
>                 } finally { 
>                         if (messageProducer != null) { 
>                                 try { 
>                                         messageProducer.close(); 
>                                 } catch (JMSException e) { 
>                                         event.getServletContext().log( 
>                                                         "Error closing 
> messageProducer", e); 
>                                 } 
>                         } 
>                         if (session != null) { 
>                                 try { 
>                                         session.close(); 
>                                 } catch (JMSException e) { 
>                                         event.getServletContext().log("Error 
> closing session", e); 
>                                 } 
>                         } 
>                         if (conn != null) { 
>                                 try { 
>                                         conn.close(); 
>                                 } catch (JMSException e) { 
>                                         event.getServletContext() 
>                                                         .log("Error closing 
> connection", e); 
>                                 } 
>                         } 
>                 } 
>         } 
>         public void contextDestroyed(ServletContextEvent event) {} 
> } 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to