我创建了一个自定义中介类,它使用spring jdbc来访问数据库中的数据。
我从该类创建一个jar并将其部署在WSO2_HOME / repository / components / lib中。
之后我将以下jar添加到同一文件夹中:
spring-jdbc.jar,< br /> spring-tx.jar。
但是当我尝试自定义中介时,出现错误“ClassNotFoundException org \ springframework \ transaction \ support \ TransactionSynchronization”。
问题是我很确定spring-tx.jar中有“TransactionSynchronization”类。任何人都可以帮我解决这个问题吗? :)
答案 0 :(得分:1)
一个原因可能是您的类路径中有两个包具有相同的“TransactionSynchronization”类。你能试试下面的吗?
您在WSO2_HOME / repository / components / dropins目录中有什么?删除dropins中的所有jar并重新启动服务器并重新检查该问题。
如果错误仍然存在,请尝试从WSO2_HOME / repository / components / lib&amp;中删除spring-tx.jar。 WSO2_HOME /存储库/组件/的dropins。然后重新安装服务器。然后检查您是否收到相同的错误或错误?
答案 1 :(得分:1)
我遇到了同样的行为。我有一个自定义弹簧介体,它调用基于角色的authNZ数据库。我正在运行esb v 4.7.0。
我从maven资源库下载了spring-tx-3.1.0.RELEASE.jar并将其复制到我的环境中的/usr/local/wso2/wso2esb-4.7.0/repository/components/lib,然后重新启动了ESB 。当我向我的代理服务发出请求时,会发生相同的类未找到异常。
今天我正在检查jar内容,当我检查/usr/local/wso2/wso2esb-4.7.0/repository/components/lib中的spring-tx jar时,当前的类:
jar tf spring-tx-3.1.0.RELEASE.jar | grep TransactionSynchronization
org/springframework/transaction/support/TransactionSynchronization.class
当我在重新启动esb后在/usr/local/wso2/wso2esb-4.7.0/repository/components/dropins中执行相同操作时,该类不存在:
jar tf ../dropins/spring_tx_3.1.0.RELEASE_1.0.0.jar
spring-tx-3.1.0.RELEASE.jar
META-INF/
META-INF/p2.inf
META-INF/MANIFEST.MF
请注意,在重启Synapse后,spring-tx jar不包含在OSGi包中。
我明天会进一步研究,包括构建一个包含我需要的Eclipse依赖项的OSGi包