Cloud Foundry无法识别@Transactional

问题描述 投票:0回答:1

我有两个申请。我们将其称为MyApp1和MyApp2。 MyApp1在本地工作,并使用@Transactional标签部署到PCF。我能够使用spring JDBC查询和读取DB。 MyApp2在本地工作,工作正常,没有任何错误。然而,当我将MyApp2推送到云代工厂时,我开始得到最奇怪的错误:

"Failed to obtain JDBC Connection: Cannot execute JDBC statements outside of a Transaction. Define @Transactional(readOnly="true") or @Transactional for all methods"

另外需要注意的是,两个应用程序都使用相同的MyDAOJar,其中包含@Transactional,因此MyApp1和MyApp2实际上使用完全相同的代码。为了让Spring能够识别MyDAOJar中的注释,我有以下内容:

@SpringBootApplication(scanBasePackages = {
"org.MyApp1",
"org.MyDaoJar"})

@SpringBootApplication(scanBasePackages = {
"org.MyApp2",
"org.MyDaoJar"})

最后要注意的是,如果我将@Transactional放在MyApp2中,就在调用MyDAOJar之上,它就开始在PCF中工作了,所以它出于某些奇怪的原因,因为Spring无法在MyDAOJar中看到@Transactionl与MyApp2。我已经在MyApp1和MyApp2之间检查了我的配置10次,并没有看到任何差异。

spring spring-boot cloudfoundry pivotal-cloud-foundry
1个回答
0
投票

奇怪的是,我最终需要做的就是将任何返回地图的Bean移动到它自己的@Configuration类(也就是我的主配置类),然后错误就消失了。为什么我不知道,所以如果有人能帮助我理解,那就太好了!

谢谢,Brian

© www.soinside.com 2019 - 2024. All rights reserved.