自定义介体ClassNotFoundException TransactionSynchronization

时间:2013-07-26 08:36:41

标签: spring wso2 wso2esb spring-jdbc

我创建了一个自定义中介类,它使用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”类。任何人都可以帮我解决这个问题吗? :)

2 个答案:

答案 0 :(得分:1)

一个原因可能是您的类路径中有两个包具有相同的“TransactionSynchronization”类。你能试试下面的吗?

  1. 您在WSO2_HOME / repository / components / dropins目录中有什么?删除dropins中的所有jar并重新启动服务器并重新检查该问题。

  2. 如果错误仍然存​​在,请尝试从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包