启用 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
注:
- 如果 DEBUG 级别日志更改为更高级别(info/error) PCML 调用
工作正常
- 我的实际要求是申请per-API DEBUG logs。由于以上
针对 per-API DEBUG logs 提出的问题,我尝试在 root 中全局启用 DEBUG 级别日志
记录器(根据 -API 日志禁用)。但问题仍然存在。
- 启用线路日志无法满足我的要求。
此错误是由于 jt400.jar 版本控制问题引起的。
可以使用最新版本的 jt400.jar(目前为 8.5 版)解决问题。
我在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
注:
- 如果 DEBUG 级别日志更改为更高级别(info/error) PCML 调用 工作正常
- 我的实际要求是申请per-API DEBUG logs。由于以上 针对 per-API DEBUG logs 提出的问题,我尝试在 root 中全局启用 DEBUG 级别日志 记录器(根据 -API 日志禁用)。但问题仍然存在。
- 启用线路日志无法满足我的要求。
此错误是由于 jt400.jar 版本控制问题引起的。 可以使用最新版本的 jt400.jar(目前为 8.5 版)解决问题。