2
votes

I use AS400 PCML Connector in Wso2 EI 6.1.1 to call AS400-DB2 remote program calls.

Issue: If DEBUG level log enabled for rootlogger in log4j.properties(wso2ei-6.1.1\conf) ,PCML call not works and throws an error: NativeWorkerPool Uncaught exception.

complete stack-trace:

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$1.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)

sample PCML file :

<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>

Enabled DEBUG log level in log4j.properties file

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

PCML connector configuration applied similar to this link:https://docs.wso2.com/display/ESBCONNECTORS/Configuring+AS400+PCML+Connector+Operations

AS400 driver implementation lib:jt400

Note:

  • If DEBUG level log changed to higher level(info/error) PCML call works fine
  • my actual requirement is to apply per-API DEBUG logs.Since the above issue raised for per-API DEBUG logs,I tried to globally enable DEBUG level log in root logger(disabled per -API logs).but issue remains same.
  • enabling wire-logs not fulfills my requirement.
1

1 Answers

0
votes

This error caused due to jt400.jar versioning problem. issue can be fixed by using latest version of jt400.jar(version 8.5 for now).