[
https://jira.jboss.org/browse/JBESB-3511?page=com.atlassian.jira.plugin.s...
]
Tom Fennelly commented on JBESB-3511:
-------------------------------------
I've reproduced this using one of the Seam examples.
At the moment, the CamelMessageComposer maps all Camel Message headers onto the ESB
Message as properties. These must be Serializable, hence the exception for
org.springframework.orm.jpa.JpaTemplate.
Easy fix is to check the value and make sure it's Serializable, but I'm really
wondering if we should only be mapping on request. Or maybe map a specific subset that we
know are OK to map and then after that... only map requested headers (checking that they
are Serializable of course).
JBESB camel integration issue with JPA URI
------------------------------------------
Key: JBESB-3511
URL:
https://jira.jboss.org/browse/JBESB-3511
Project: JBoss ESB
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Adapters
Affects Versions: 4.9
Environment: Windows XP, Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Reporter: Dushman Elvitigala
Assignee: Tom Fennelly
Test was performed with the below configuration:
<providers>
<camel-provider name="camelProvider1">
<camel-bus busid="camelBus2">
<from
uri="jpa://[classname]?persistenceUnit=cdrLoader&consumer.namedQuery=loadRecords"
/>
</camel-bus>
</camel-provider>
</providers>
<services>
<service category="camelDbServiceCategory" name="camelDbService"
description="databse service" invmScope="GLOBAL">
<listeners>
<camel-gateway name="camelGateway2" busidref="camelBus2"
/>
</listeners>
<actions>
<action name="action1"
class="org.jboss.soa.esb.actions.SystemPrintln" />
</actions>
</service>
</services>
=====================================================
<persistence-unit name="cdrLoader"
transaction-type="RESOURCE_LOCAL">
<non-jta-data-source>java:/cepDS</non-jta-data-source>
<class>xxxxxx</class>
<properties>
<property name="hibernate.archive.autodetection" value="class,
hbm" />
<property name="hibernate.dialect"
value="org.hibernate.dialect.Oracle10gDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
======================================================
Exception:
ERROR [DefaultErrorHandler] Failed delivery for exchangeId:
3ed796b8-8e03-4538-91d4-e4fded1fdeac. Exhausted after delivery attempt: 1 caught:
java.lang.IllegalArgumentException: Value of
property 'CamelJpaTemplate' must implement java.io.Serializable. Value is of
type org.springframework.orm.jpa.JpaTemplate
java.lang.IllegalArgumentException: Value of property 'CamelJpaTemplate' must
implement java.io.Serializable. Value is of type org.springframework.orm.jpa.JpaTemplate
at
org.jboss.internal.soa.esb.message.format.xml.PropertiesImpl.setProperty(PropertiesImpl.java:77)
at
org.jboss.soa.esb.listeners.gateway.camel.CamelMessageComposer.populateMessage(CamelMessageComposer.java:63)
at
org.jboss.soa.esb.listeners.gateway.camel.CamelMessageComposer.populateMessage(CamelMessageComposer.java:41)
at
org.jboss.soa.esb.listeners.message.AbstractMessageComposer.compose(AbstractMessageComposer.java:76)
at
org.jboss.soa.esb.listeners.gateway.camel.ServiceProcessor.process(ServiceProcessor.java:48)
at org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:95)
at org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:65)
at
org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:50)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)
at
org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:104)
at org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:272)
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:98)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)
at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
at
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:99)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)
at
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:290)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:202)
at org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:256)
at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:99)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:70)
at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:98)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:89)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:68)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:91)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:85)
at org.apache.camel.component.jpa.JpaConsumer.processBatch(JpaConsumer.java:145)
at org.apache.camel.component.jpa.JpaConsumer$1.doInJpa(JpaConsumer.java:95)
at
org.apache.camel.component.jpa.JpaTemplateTransactionStrategy$1$1.doInJpa(JpaTemplateTransactionStrategy.java:82)
at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:183)
at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:146)
at
org.apache.camel.component.jpa.JpaTemplateTransactionStrategy$1.doInTransaction(JpaTemplateTransactionStrategy.java:80)
at
org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)
at
org.apache.camel.component.jpa.JpaTemplateTransactionStrategy.execute(JpaTemplateTransactionStrategy.java:78)
at org.apache.camel.component.jpa.JpaConsumer.poll(JpaConsumer.java:79)
at
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:98)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira