cancel
Showing results for 
Search instead for 
Did you mean: 

ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder (ActiveMQ 5.5.1)

vadimklimov
Active Contributor
0 Kudos

Dear PI community,

Setting up a JMS-based configuration scenario in PI 7.3 where Apache ActiveMQ 5.5.1 was used as a JMS broker, I faced the following exception in JMS sender communication channel:

[EXCEPTION]
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.sap.aii.adapter.jms.core.common.InvokeUtils.invoke(InvokeUtils.java:295)
at com.sap.aii.adapter.jms.core.common.InvokeUtils.invoke(InvokeUtils.java:266)
at com.sap.aii.adapter.jms.core.connector.DirectConnectorImpl.createConnectionFactory(DirectConnectorImpl.java:97)
at com.sap.aii.adapter.jms.core.connector.ConnectorImpl.doConnect(ConnectorImpl.java:379)
at com.sap.aii.adapter.jms.core.connector.ConnectorImpl.connectIfDisconnected(ConnectorImpl.java:218)
at com.sap.aii.adapter.jms.core.connector.ConnectorImpl.connect(ConnectorImpl.java:195)
at com.sap.aii.adapter.jms.core.channel.ChannelImpl.doStart(ChannelImpl.java:288)
at com.sap.aii.adapter.jms.core.channel.ChannelImpl.start(ChannelImpl.java:168)
at com.sap.aii.adapter.jms.core.channel.AdapterImpl$1.run(AdapterImpl.java:862)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:185)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:302)
Caused by: java.lang.NoClassDefFoundError: org/apache/activemq/ActiveMQPrefetchPolicy : cannot initialize class because prior initialization attempt failed
at org.apache.activemq.ActiveMQConnectionFactory.<init>(ActiveMQConnectionFactory.java:88)
at org.apache.activemq.ActiveMQConnectionFactory.<init>(ActiveMQConnectionFactory.java:131)
... 17 more
Caused by: java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
at org.slf4j.LoggerFactory.getSingleton(LoggerFactory.java:230)
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:121)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:112)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:275)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:248)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:261)
at org.apache.activemq.ActiveMQPrefetchPolicy.<clinit>(ActiveMQPrefetchPolicy.java:38)
... 19 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder

Looking for the solution of the problem, I found the recommendation on SLF4J speaking about missing binding:

http://www.slf4j.org/codes.html#StaticLoggerBinder

Did anyone come across similar issue and how did you resolve it? Did you have to change bindings in deployed ActiveMQ library or did you use a different approach?

Regards,

Vadim

Accepted Solutions (1)

Accepted Solutions (1)

MichalKrawczyk
Active Contributor
0 Kudos

Hi,

1. please list the libraries you've added to the driver file

2. I'm running activemq 4.5.3 with 7.3 without any issues so there should be no issues with 5.5 too I guess (but it's based on a new java so who knows)

Regards,

Michal Krawczyk

vadimklimov
Active Contributor
0 Kudos

Hello Michal,

I used activemq-all-5.5.1.jar as a driver library (taken from ActiveMQ distributive). When building com.sap.aii.adapter.lib.sda, the only manual action done for activemq-all-5.5.1.jar was to delete /javax/jms/ out of it, the rest was kept as is.

Regards,

Vadim

MichalKrawczyk
Active Contributor
0 Kudos

Hi,

please make sure you add all those to the file and lib folder ok ?

<jar-name>lib/com.sap.aii.adapter.lib_api.jar</jar-name>

<jar-name>lib/slf4j-log4j12-1.5.11.jar</jar-name>

<jar-name>lib/log4j-1.2.14.jar</jar-name>

<jar-name>lib/activemq-all-5.5.1.jar</jar-name>

Regards,

Michal Krawczyk

MichalKrawczyk
Active Contributor
0 Kudos

hi,

tested with 5.5.1 on PI 7.3 and it works

Regards,

Michal Krawczyk

vadimklimov
Active Contributor
0 Kudos

Michal, after I extended provider.xml with references to SLF4J libraries, everything worked fine for me. Working provider.xml looks like this now (extract of it is given below):

<jar-name>lib/com.sap.aii.adapter.lib_api.jar</jar-name>
<jar-name>lib/activemq-all-5.5.1.jar</jar-name>
<jar-name>lib/slf4j-log4j12-1.6.4.jar</jar-name>
<jar-name>lib/log4j-over-slf4j-1.6.4.jar</jar-name>

Thank you a lot for your help!

Best regards,

Vadim

Former Member
0 Kudos

Hi Michal,

we are trying to connect to the ActiveMQ (5.5.1) from PI 7.3 using JMS adapter and the provider.xml exactly looks like above and i have followed your blog PI tips Active MQ and i am getting the error as below. Any help would be appreciated.

A channel error occurred. Detailed error (if any) : com.sap.aii.adapter.jms.api.connector.ConnectorException: Cannot construct connection factory using constructor: ConstructorInvocationException: Error executing constructor invocation: <br>{ConstructorInvocation<br>{className=org.apache.activemq.ActiveMQConnectionFactory,<br>invokeParams=[<br>{InvokeParameter<br>{className=null,<br>type=java.lang.String,<br>value=tcp://XX.XXX.XX.XX:61616<br>}]<br>}: java.lang.reflect.InvocationTargetException at com.sap.aii.adapter.jms.core.connector.DirectConnectorImpl.createConnectionFactory(DirectConnectorImpl.java:101) <br>

Thanks,

Srini

Former Member
0 Kudos

HI Michal/Vadim,

My provider.xml looks like below.

<?xml version="1.0"?>

-<provider-descriptor> <display-name>XPI Adapter Library</display-name> <component-name>com.sap.aii.adapter.lib</component-name> <provider-name>sap.com</provider-name> -<references> <reference provider-name="sap.com" strength="strong" type="library">engine.j2ee14.facade</reference> </references> -<jars> <jar-name>lib/com.sap.aii.adapter.lib_api.jar</jar-name> <jar-name>lib/activemq-all-5.5.1.jar</jar-name> <jar-name>lib/slf4j-log4j12-1.6.4.jar</jar-name> <jar-name>lib/log4j-over-slf4j-1.6.4.jar</jar-name> <jar-name>lib/spring-aop-3.0.3.RELEASE.jar</jar-name> <jar-name>lib/spring-asm-3.0.3.RELEASE.jar</jar-name> <jar-name>lib/spring-beans-3.0.3.RELEASE.jar</jar-name> <jar-name>lib/spring-context-3.0.3.RELEASE.jar</jar-name> <jar-name>lib/spring-core-3.0.3.RELEASE.jar</jar-name> <jar-name>lib/spring-expression-3.0.3.RELEASE.jar</jar-name> <jar-name>lib/spring-jms-3.0.3.RELEASE.jar</jar-name> <jar-name>lib/spring-oxm-tiger-1.5.8.jar</jar-name> <jar-name>lib/spring-tx-3.0.3.RELEASE.jar</jar-name> </jars> </provider-descriptor>

Do i need to remove all spring files and just have 4 jar files and above? Do i need to set any class path? I did overwrite option while deploying the sda file using JSPM. Any help would be appreciated.

Thanks,

Srini

Former Member
0 Kudos

Hi Vadim,

My provider.xml looks exactly like you and i was able to overcome the slf4j error but i am still getting the target invocation error. Can you please let me know what are the JMS adapter additional parameters details in the channel?

The default trace doesn't have slf4j error but still getting the error as below. any help would be appreciated.

A channel error occurred. Detailed error (if any) : com.sap.aii.adapter.jms.api.connector.ConnectorException: Cannot construct connection factory using constructor: ConstructorInvocationException: Error executing constructor invocation: <br>{ConstructorInvocation<br>{className=org.apache.activemq.ActiveMQConnectionFactory,<br>invokeParams=[<br>{InvokeParameter<br>{className=null,<br>type=java.lang.String,<br>value=tcp://XX.XXX.XX.XX:61616<br>}]<br>}: java.lang.reflect.InvocationTargetException at com.sap.aii.adapter.jms.core.connector.DirectConnectorImpl.createConnectionFactory(DirectConnectorImpl.java:101) <br>

Thanks,

Srini

Answers (0)