Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: V2.0.0 throws java.lang.ClassNotFoundException: com.mongodb.client.MongoClients in mi v4.2.0 #3502

Open
anupama-pathirage opened this issue Aug 15, 2024 · 0 comments

Comments

@anupama-pathirage
Copy link
Contributor

Description

Moving the issue from https://github.com/wso2-extensions/esb-connector-mongodb/issues/11

image

Description:
As I need to connect the latest version of MongoDB (7.x.x), I tried the V2.0.0 tag with the updated drivers. It deploys normally but when I try to use the connector I have the following error :

[2023-06-27 13:33:16,916] ERROR {NativeWorkerPool} - Uncaught exception java.lang.NoClassDefFoundError: com/mongodb/client/MongoClients at org.wso2.carbon.connector.utils.SimpleMongoClient.<init>(SimpleMongoClient.java:72) at org.wso2.carbon.connector.connection.MongoConnection.<init>(MongoConnection.java:69) at org.wso2.carbon.connector.operations.MongoConfig.connect(MongoConfig.java:73) at org.wso2.carbon.connector.core.AbstractConnector.mediate(AbstractConnector.java:32) at org.apache.synapse.mediators.ext.ClassMediator.updateInstancePropertiesAndMediate(ClassMediator.java:178) at org.apache.synapse.mediators.ext.ClassMediator.mediate(ClassMediator.java:97) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:110) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72) at org.apache.synapse.mediators.template.TemplateMediator.mediate(TemplateMediator.java:136) at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:170) at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:93) at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:141) at org.apache.synapse.mediators.template.InvokeMediator.mediate(InvokeMediator.java:93) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:110) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:72) at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158) at org.apache.synapse.api.Resource.process(Resource.java:342) at org.apache.synapse.api.API.process(API.java:477) at org.apache.synapse.api.AbstractApiHandler.apiProcess(AbstractApiHandler.java:94) at org.apache.synapse.api.AbstractApiHandler.dispatchToAPI(AbstractApiHandler.java:72) at org.apache.synapse.api.rest.RestRequestHandler.dispatchToAPI(RestRequestHandler.java:90) at org.apache.synapse.api.rest.RestRequestHandler.process(RestRequestHandler.java:76) at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:54) at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:346) at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:101) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:379) at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:438) at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:186) at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.ClassNotFoundException: com.mongodb.client.MongoClients at org.apache.axis2.classloader.MultiParentClassLoader.loadClass(MultiParentClassLoader.java:279) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 33 more

I believe the problem comes from the fact that there is an older version of the drivers

<groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.5.0</version>

included in the MI. That version seems to be a dependency of dataservices and the way to create a a connection didn't use MongoClients

I tried to add the new drivers (mongodb-driver-sync-4.9.1.jar, bson-4.9.1.jar, bson-record-codec-4.9.1.jar, mongodb-driver-core-4.9.1.jar) at several places $MI_HOME/lib, $MI_HOME/wso2/components/plugins/, $MI_HOME/wso2/lib but nothing seems to work. The mi always uses the older version of the driver

Suggested Labels:
maven,dependencies,ClassNotFoundException

Suggested Assignees:

Affected Product Version:
v2.0.0 on mi v4.2.0

OS, DB, other environment details and versions:
Windows, started in the Integration Studio
Steps to reproduce:

  1. Build the V2.0.0 with mvn clean install
  2. Add the connector to the project
  3. Add the connector to the ConnectorExporter
  4. Create an InsertOne in an API
  5. Optional because it doesn't seem to change anything : add the new drivers to lib
  6. Run the project on the embedded Micro Integrator
  7. Call the API (with postman) with a relevant message

I tried the same logic with an older version of MongoDB (5.0.18) and the connector v1.0.2 (with the older driver), and it worked.

Related Issues:

Steps to Reproduce

No response

Affected Version(s)

No response

OS, DB, other environment details and versions

No response

Related issue(s) (optional)

No response

Suggested label(s) (optional)

No response

Suggested assignee(s) (optional)

No response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant