启用 DEBUG 日志级别 WSO2 EI 6.1.1 时使用 PCML 连接器时 NativeWorkerPool 未捕获异常 java.lang.NoSuchMethodError

NativeWorkerPool Uncaught exception java.lang.NoSuchMethodError while using PCML Connector when enabling DEBUG log level WSO2 EI 6.1.1

我在Wso2 EI 6.1.1中使用AS400 PCML Connector调用AS400-DB2远程程序调用

问题: 如果在 log4j.properties(wso2ei-6.1.1\conf) 中为 rootlogger 启用 DEBUG 级别日志 ,PCML 调用不起作用并抛出错误:NativeWorkerPool 未捕获异常。

完整的堆栈跟踪:

ERROR - NativeWorkerPool Uncaught exception java.lang.NoSuchMethodError: com.ibm.as400.access.SocketProperties.getLoginTimeout()I at org.wso2.carbon.connector.pcml.AS400Initialize.getSocketProperties(AS400Initialize.java:297) at org.wso2.carbon.connector.pcml.AS400Initialize.getConnectionPool(AS400Initialize.java:216) at org.wso2.carbon.connector.pcml.AS400Initialize.connect(AS400Initialize.java:78) at org.wso2.carbon.connector.core.AbstractConnector.mediate(AbstractConnector.java:32) at org.apache.synapse.mediators.ext.ClassMediator.mediate(ClassMediator.java:84) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59) at org.apache.synapse.mediators.template.TemplateMediator.mediate(TemplateMediator.java:104) at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:148) at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:84) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59) at org.apache.synapse.mediators.template.TemplateMediator.mediate(TemplateMediator.java:104) at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:148) at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:84) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59) at org.apache.synapse.mediators.template.TemplateMediator.mediate(TemplateMediator.java:104) at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:148) at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:84) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59) at org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:169) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59) at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158) at org.apache.synapse.rest.Resource.process(Resource.java:343) at org.apache.synapse.rest.API.process(API.java:399) at org.apache.synapse.rest.RESTRequestHandler.apiProcess(RESTRequestHandler.java:123) at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:101) at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:69) at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:304) at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:78) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:326) at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:372) at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:151) at org.apache.axis2.transport.base.threads.NativeWorkerPool.run(NativeWorkerPool.java:172) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

示例 PCML 文件:

<pcml version="4.0">
 <program name="Validate" path="/QSYS.LIB/SVDGDG.LIB/PEB0012.PGM">
 <data name="inputNIC" type="char" length="15" usage="input" />
 <data name="inputIAC" type="char" length="4" usage="input" />
 <data name="outputStatusCode" type="char" length="1" usage="output" />
 </program>
</pcml>

在 log4j.properties 文件中启用 DEBUG 日志级别

log4j.rootLogger=DEBUG, CARBON_CONSOLE, CARBON_LOGFILE, CARBON_MEMORY, CARBON_SYS_LOG, ERROR_LOGFILE

PCML 连接器配置应用类似于此 link:https://docs.wso2.com/display/ESBCONNECTORS/Configuring+AS400+PCML+Connector+Operations

AS400 驱动实现 lib:jt400

注:

此错误是由于 jt400.jar 版本控制问题引起的。 可以使用最新版本的 jt400.jar(目前为 8.5 版)解决问题。