You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "Jean-Louis MONTEIRO (JIRA)" <ji...@apache.org> on 2012/09/20 11:01:11 UTC
[jira] [Updated] (TOMEE-233) Default JMS Persistence with hsql
causes issue when restarting server
[ https://issues.apache.org/jira/browse/TOMEE-233?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jean-Louis MONTEIRO updated TOMEE-233:
--------------------------------------
Affects Version/s: (was: 1.5.0)
> 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