【问题标题】:because of No bean could be found in the registry of type: PlatformTransactionManager因为 No bean can be found in the registry of type: PlatformTransactionManager
【发布时间】:2015-08-27 13:38:31
【问题描述】:

我正在尝试配置spring事务策略

 <bean id="transactionManager" class="org.springframework.transaction.jta.WebSphereUowTransactionManager">
 </bean>


<bean id="PROPAGATION_REQUIRED" class="org.apache.camel.spring.spi.SpringTransactionPolicy">      
<property name="transactionManager" ref="transactionManager" />    
    <property name="propagationBehaviorName" value="PROPAGATION_REQUIRED" />    
</bean>

这是我的例外

    Caused by: org.apache.camel.NoSuchBeanException: No bean could be found in the registry of type: PlatformTransactionManager

我不知道为什么我会得到那个例外。有人可以帮忙吗?

这是我的堆栈跟踪。希望这会有所帮助

org.apache.camel.FailedToCreateRouteException: Failed to create route RetryableRoute at: >>> Transacted[] <<< in route: Route(RetryableRoute)[[From[direct:start]] -> [Transacted[]]... because of No bean could be found in the registry of type: PlatformTransactionManager
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:910) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:175) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:780) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:2068) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1816) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1683) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1651) ~[camel-core-2.13.2.jar:2.13.2]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) ~[na:1.6.0]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) ~[na:1.6.0]
    at java.lang.reflect.Method.invoke(Method.java:611) ~[na:1.6.0]
    at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:407) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:278) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:251) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:166) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) [camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191) [camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:157) [camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:68) [camel-core-2.13.2.jar:2.13.2]
    at java.util.Timer$TimerImpl.run(Timer.java:296) [na:na]
Caused by: org.apache.camel.NoSuchBeanException: No bean could be found in the registry of type: PlatformTransactionManager
    at org.apache.camel.model.TransactedDefinition.doResolvePolicy(TransactedDefinition.java:234) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.model.TransactedDefinition.resolvePolicy(TransactedDefinition.java:168) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.model.TransactedDefinition.createProcessor(TransactedDefinition.java:145) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:499) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:212) ~[camel-core-2.13.2.jar:2.13.2]
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:907) ~[camel-core-2.13.2.jar:2.13.2]
    ... 23 common frames omitted

【问题讨论】:

  • 而不是 sn-ps 发布完整的堆栈跟踪。
  • 是的,添加了堆栈跟踪
  • 看起来您的带有 spring 集成的 apache camel 设置不正确。
  • 这是什么意思? camel.apache.org/transactional-client.html 我正在使用他们在骆驼网站中提到的相同设置
  • 您遵循部分配置的事实确实意味着它可以工作。我想需要做更多的工作才能正确整合。这基本上就是堆栈跟踪告诉您的内容,从骆驼不知道您在文件中所做的事情来看。看起来它是在与骆驼完全不同的上下文中加载的。

标签: spring apache-camel websphere jta


【解决方案1】:

我知道这可能对最初的问题没有帮助,但我来这里是为了寻找解决方案:

Caused by: org.apache.camel.NoSuchBeanException: No bean could be found in the registry of type: PlatformTransactionManage

在尝试为 apache 骆驼路由的 SQL 数据源设置事务时,发现像在 camel-context.xml 中一样指定它:

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="mydatasource"/>
</bean>

解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-26
    • 2021-10-29
    • 2022-12-02
    • 2014-03-02
    • 2022-12-27
    • 2017-05-13
    相关资源
    最近更新 更多