-
Type: Improvement
-
Resolution: Won't Fix
-
Priority: Major - P3
-
None
-
Affects Version/s: 3.0.3, 2.13.3
-
Component/s: Authentication
-
Environment:Android 21
New description:
As of MongoDB 3.0, the default authentication protocol is a SASL implementation of SCRAM-SHA1. The driver relies on the following classes to implement it:
import javax.crypto.Mac; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec; import javax.security.sasl.SaslClient; import javax.security.sasl.SaslException
Some or all of these are not available on Android, which does not offer a full implementation of the JRE.
Also of note is that PLAIN and GSSAPI authentication mechanisms also rely on the availability of a SASL library, so those won't function properly either.
Previous description:
I'm developing an Android app that use the java mongodb driver 3.0.3 to connect to every instance of mongodb.
At runtime I have some error:
09-11 19:13:50.898 7418-7418/it.mysite.mongodbviewer W/org.bson.ObjectId﹕ Failed to get process identifier from JMX, using random number instead java.lang.NoClassDefFoundError: Failed resolution of: Ljava/lang/management/ManagementFactory;
and
com.mongodb.MongoException: java.lang.NoClassDefFoundError: com.mongodb.connection.ScramSha1Authenticator$ScramSha1SaslClient
that generate a loop with this:
I/art﹕ Rejecting re-init on previously-failed class java.lang.Class
Anyone has a solution? java/lang/management/ManagementFactory seems not to exist for Android, how can you solve? If this is the center of the problem.
More information at http://stackoverflow.com/questions/32529484/mongodb-3-x-driver-android-compatibility/32531278#32531278