3

我制作了一个自定义中介类,该类使用 spring jdbc 来访问数据库中的数据。
我从那个类制作了一个 jar 并将其部署在 WSO2_HOME/repository/components/lib 中。
之后,我将以下 jar 添加到同一文件夹:
spring-jdbc.jar、
spring-tx.jar。

但是当我尝试自定义调解器时,出现错误“ClassNotFoundException org\springframework\transaction\support\TransactionSynchronization”。

问题是我很确定 spring-tx.jar 中提供了“TransactionSynchronization”类。谁能帮我解决这个问题?:)

4

2 回答 2

1

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

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

  2. 如果错误仍然存​​在,请尝试从 WSO2_HOME/repository/components/lib 和 WSO2_HOME/repository/components/dropins 中删除 spring-tx.jar。然后重启服务器。然后检查您是否收到相同的错误或不同的错误?

于 2013-07-29T09:38:22.917 回答
1

我正在经历同样的行为。我有一个自定义的 spring 调解器,它调用基于角色的 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 包中。

明天我将进一步调查,包括构建一个 OSGi 包,其中包含我通过 Eclipse 需要的 Spring 依赖项

于 2013-08-14T03:19:55.840 回答