webMethods

webMethods

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.

 View Only
  • 1.  Log4j2 Async logger issue

    Posted Tue August 01, 2023 01:37 PM

    Hi Team,

    Trying to implement async logger using log4j2 disruptor. And have loaded all the below three jars into package/code/jar folder.
    Restart IS and reloaded package too.

    log4j-core
    log4j-API
    disruptor-3.4.2

    The log4j and log4j API jars working fine. But the disruptor is not working with below error. Cna any one help here?

    IS version 10.11
    Platform Windows.

    HTTP Handler 127.0.0.1 ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.async.AsyncLoggerConfig for element AsyncLogger: java.lang.NoClassDefFoundError: com/lmax/disruptor/EventHandler java.lang.reflect.InvocationTargetException
    INFO | jvm 2 | 2023/08/01 13:25:04 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:136)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1120)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1045)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1037)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:651)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:247)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:293)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:626)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:699)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.apache.logging.log4j.core.LoggerContext.setConfigLocation(LoggerContext.java:684)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at DemoLog4j2.Utilities.JavaServices.initLog4j2(JavaServices.java:138)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:404)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:759)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:53)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:339)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:33)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:400)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:629)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:434)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:392)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:260)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:231)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:263)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:662)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.lang.flow.FlowState.step(FlowState.java:527)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.lang.flow.FlowState.invoke(FlowState.java:494)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.FlowSvcImpl.baseInvoke(FlowSvcImpl.java:1150)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:759)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:53)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:339)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:33)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:400)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:629)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:434)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:392)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:260)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.comm.DefaultServerRequestHandler.handleMessage(DefaultServerRequestHandler.java:119)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.HTTPMessageHandler.process(HTTPMessageHandler.java:158)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.HTTPDispatch.handleRequest(HTTPDispatch.java:203)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.app.b2b.server.Dispatch.run(Dispatch.java:391)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at com.wm.util.pool.PooledThread.run(PooledThread.java:127)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at java.base/java.lang.Thread.run(Thread.java:829)
    INFO | jvm 2 | 2023/08/01 13:25:04 | Caused by: java.lang.NoClassDefFoundError: com/lmax/disruptor/EventHandler
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.apache.logging.log4j.core.config.AbstractConfiguration.getAsyncLoggerConfigDelegate(AbstractConfiguration.java:211)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.apache.logging.log4j.core.async.AsyncLoggerConfig.(AsyncLoggerConfig.java:90)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.apache.logging.log4j.core.async.AsyncLoggerConfig.createLogger(AsyncLoggerConfig.java:273)
    INFO | jvm 2 | 2023/08/01 13:25:04 | … 58 more
    INFO | jvm 2 | 2023/08/01 13:25:04 | Caused by: java.lang.ClassNotFoundException: com.lmax.disruptor.EventHandler cannot be found by org.apache.logging.log4j.core_2.17.1
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:511)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:414)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:153)
    INFO | jvm 2 | 2023/08/01 13:25:04 | at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    INFO | jvm 2 | 2023/08/01 13:25:04 | … 61 more
    INFO | jvm 2 | 2023/08/01 13:25:04 |
    INFO | jvm 2 | 2023/08/01 13:25:04 | 2023-08-01 13:25:03,386 HTTP Handler 127.0.0.1 ERROR Null object returned for AsyncLogger in Loggers.
    INFO | jvm 2 | 2023/08/01 13:25:04 | 2023-08-01 13:25:03,388 HTTP Handler 127.0.0.1 ERROR Null object returned for AsyncLogger in Loggers.
    INFO | jvm 2 | 2023/08/01 13:25:04 | 2023-08-01 13:25:03,388 HTTP Handler 127.0.0.1 ERROR Null object returned for AsyncLogger in Loggers.
    INFO | jvm 2 | 2023/08/01 13:25:04 | 2023-08-01 13:25:03,388 HTTP Handler 127.0.0.1 ERROR Null object returned for AsyncLogger in Loggers.
    INFO | jvm 2 | 2023/08/01 13:25:04 | 2023-08-01 13:25:03.41 : Integration Server detected loss of its Log4j configuration. Integration Server is restoring its Log4j configuration.


    #Integration-Server-and-ESB
    #webMethods


  • 2.  RE: Log4j2 Async logger issue

    Posted Tue August 01, 2023 01:38 PM

    log4j2.xml (1.3 KB)

    PFA for the log4j file.


    #Integration-Server-and-ESB
    #webMethods


  • 3.  RE: Log4j2 Async logger issue

    Posted Tue August 01, 2023 02:39 PM

    Log4j is already a part of the wM IS environment. You should see it listed in the server classpath on the About page in IS Administrator. Take note of the last entry in the stack trace that was posted.

    You’re likely experiencing library version conflicts.

    I’m unlikely to persuade you away from using log4j but you might consider creating logging facilities in an “integration Server way” instead of a “Java way.”

    The IS API com.wm.app.b2b.server.LogOutputStream provides a basis for auto-rotating custom log files. We’ve used this in couple of cases, long ago. We usually don’t use these days – most of the logging we do is to the MWS activity log.

    As with everything, there are pros/cons to that approach. Bloated library with obtuse configuration files and security vulnerabilities (from a logging library!) are not amongst those. :slight_smile:


    #webMethods
    #Integration-Server-and-ESB


  • 4.  RE: Log4j2 Async logger issue

    Posted Tue August 01, 2023 04:50 PM

    Thanks Reamon, Right the log4j are already part of it so I guess it is taken care. This disruptor, do I need to add it under static folder and make it available for IS?

    I don’t want to go on why we don’t want IS way of logging, which we did and now using log4j2 :smile:


    #Integration-Server-and-ESB
    #webMethods


  • 5.  RE: Log4j2 Async logger issue

    Posted Wed August 02, 2023 10:43 AM

    Presumably, yes. Perhaps someone in the forums has additional details. Likely need to make sure the version is compatible. And address dependencies. Hopefully the dependencies don’t cause an explosion of loading more and more libraries, the way these things can sometimes go. :slight_smile:


    #Integration-Server-and-ESB
    #webMethods


  • 6.  RE: Log4j2 Async logger issue

    Posted Wed August 02, 2023 10:36 AM

    Just to add, I removed log4j jars to avoid conflicts with IS provided and kept disruptor jar alone. Which is similar to Log4j Asynchronous in 10.5 IS , but still adding the entry “package” didn’t resolve the issue. Please let me know whether am I missing something?


    #webMethods
    #Integration-Server-and-ESB


  • 7.  RE: Log4j2 Async logger issue

    Posted Thu August 10, 2023 02:53 PM

    From the description, I’m not sure if your issue is related. However, when we upgraded from version 10.3 to 10.11, our custom logging package (which is based on Log4Jv2) stopped working. It turned out to be a classloader issue. Upon changing the manifest.v3 file in the package to use the “package” classloader, the issue went away.

    To do so, you can add the following entry to the manifest.v3 file:

    <value name="classloader">package</value>

    Hope this helps,
    Percio


    #Integration-Server-and-ESB
    #webMethods


  • 8.  RE: Log4j2 Async logger issue

    Posted Thu August 10, 2023 04:41 PM

    Thanks Percio, forgot to update this page. Finally it worked after adding calssloader and I have achieved the expected results.


    #Integration-Server-and-ESB
    #webMethods