Salesforce

Getting error: A public jmsfromABL.AdminObjectFinder class was not found, when connecting to ActiveMQ

« Go Back

Information

 
TitleGetting error: A public jmsfromABL.AdminObjectFinder class was not found, when connecting to ActiveMQ
URL Namegetting-error-a-public-jmsfromabl-adminobjectfinder-class-was-not-found-when-connecting-to-activemq
Article Number000215064
EnvironmentProduct: OpenEdge
Version: All Supported Versions
OS: All Supported Platforms
Question/Problem Description

Using the ABL below to read an ActiveMQ queue results in the following errors.
 

DEFINE VARIABLE ptpsession AS HANDLE.
DEFINE VARIABLE messageH AS HANDLE.
DEFINE VARIABLE lDebug AS LOGICAL.
DEFINE VARIABLE cdate AS CHARACTER NO-UNDO FORMAT "x(16)".
DEFINE VARIABLE ddate AS DATE IN-UNDO.

/* Creates the session object. */
RUN jms/ptpsession.p PERSISTENT SET ptpsession ("-SMQConnect").

/* Set user credentials. */
RUN setBrokerURL IN ptpsession (INPUT "tcp://IN38933000:61616").

/* Note: the format for broker URL with ActiveMQ is tcp://hostname:port. 
    default port is 61616.  If broker URL is not in the correct format you might see the following 
    message in the cc.server.log 

 java.lang.Exception: org.apache.activemq.ActiveMQConnectionFactory class file not mentioned correctly: java.lang.reflect.InvocationTargetException
at com.progress.messaging.jms.jms.createQueueFactory(jms.java:220)
*/

RUN setUser IN ptpsession (INPUT "admin").
RUN setPassword IN ptpsession (INPUT "admin").

/* Connect to the broker. */
RUN beginSession IN ptpsession.

/* Create a text message */
RUN createTextMessage IN ptpsession(OUTPUT messageH).

ddate = DATE(cdate).
RUN setText IN messageH ("This is test message sent.").

/* Publish the message on the "RequestQ" topic */
RUN sendToQueue IN ptpsession("MyQueue1", messageH, ?, ?, ?).
RUN deleteMessage IN messageH.
RUN deleteSession IN ptpsession.

Message "Sent".


Error:

A public jmsfromABL.AdminObjectFinder class was not found, when connecting to ActiveMQ

 

Steps to Reproduce1) Load an activemq queue
2) Execute the ABL code added at the opening of this call to try to read or publish to the queue
Clarifying Information
Error MessageA public jmsfromABL.AdminObjectFinder class was not found.
Defect Number
Enhancement Number
Cause
This is an expected behavior when not using JNDI with ActiveMQ. The same message will be returned with SonicMQ as the provider.

This is just a warning message that appears in the adapter's server log whenever the user didn't implement and install a JNDI (or other admin. object storage) support.

For example, you would not see this message if you used WebSphere MQ with a remote adapter client, as JNDI is required in that scenario for the connection to work.
 
Resolution

Update [PluginPolicy.Progress.SonicMQ] section in AdminServerPlugins.properties file as show below:

[PluginPolicy.Progress.SonicMQ]
pluginclasspath=${DLC}/java/progress.jar,${DLC}/java/ext/activemq-all-<version>.jar
classpath=${DLC}/java/progress.jar,${DLC}/java/ext/activemq-all-<version>.jar
jvmargs=-DsonicMQExtensions=false -DjmsProvider=ActiveMQ

 

Workaround
Notes
Make the AdminObjectFinder.jar is set and good, if there are any changes the class needs to be regenerated.
If there is a current environment(A) where the configuration already works, porting over the jar file from current environment A  to a new environment B should work, rather than rebuilding it on the new environment (B).
Keyword Phrase
Last Modified Date2/23/2023 9:32 PM

Powered by