Je ne parviens pas à me connecter à mon service Compose MongoDB à partir de mon application bluemix déployée. Il semble qu'il ne peut pas trouver le certificat nécessaire. Je m'attendais à ce qu'il prenne cela directement à partir de la variable d'environnement VCAP_SERVICES.Impossible de se connecter à mongodb dans Bluemix, impossible de trouver le chemin du certificat
Je peux exécuter cette amende à partir de mon environnement de test local car j'ai importé la clé dans le magasin de clés approprié en Java.
Si je regarde leur exemple node.js sur bluemix, ils passent le certificat lors de la connexion. Cependant, je ne peux pas trouver cela n'importe où sur l'API Java.
Je crois que je dois soit ajouter ce cert à la VM sur bluemix (semble improbable) ou je dois le passer via le pilote Java quand je ne peux pas (ne peut pas voir comment).
Pensées?
Pour mémoire, c'est l'exception que je reçois:
com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches
ReadPreferenceServerSelector{readPreference=primary}. Client view of
cluster state is {type=UNKNOWN, servers=[{address=bluemix-sandbox-dal-9-portal.7.dblayer.com:26123, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketWriteException: Exception sending message}, caused by {javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target}, caused by {sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target}, caused by {sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target}}, {address=bluemix-sandbox-dal-9-portal.6.dblayer.com:26123, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketWriteException: Exception sending message}, caused by {javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target}, caused by {sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target}, caused by {sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target}}]
com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:377)
com.mongodb.connection.BaseCluster.selectServer(BaseCluster.java:104)
com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:75)
com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:71)
com.mongodb.binding.ClusterBinding.getReadConnectionSource(ClusterBinding.java:63)
com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:402)
com.mongodb.operation.FindOperation.execute(FindOperation.java:510)
com.mongodb.operation.FindOperation.execute(FindOperation.java:81)
com.mongodb.Mongo.execute(Mongo.java:836)
com.mongodb.Mongo$2.execute(Mongo.java:823)
com.mongodb.FindIterableImpl$FindOperationIterable.first(FindIterableImpl.java:216)
com.mongodb.FindIterableImpl.first(FindIterableImpl.java:156)
com.ibm.smarts.experiment.UserMgr.getUserDetails(UserMgr.java:146)
com.ibm.smarts.experiment.UserMgr.authenticateUser(UserMgr.java:123)
com.ibm.smarts.experiment.servlet.LoginServlet.doPost(LoginServlet.java:31)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Liberty pour Java buildpack devrait produire un fichier server.xml pour vous avec une source de données MongoDB et un fichier de clés. Pouvez-vous vous connecter de cette façon au lieu d'analyser VCAP_SERVICES et d'initialiser vous-même le client Java? – opiethehokie
J'utilise Tomcat plutôt que Liberty. Existe-t-il un fichier server.xml similaire pour cela? – DungeonTiger
Je peux me connecter à partir de ma machine locale en analysant le VCAP et obtenir un bluemix ferme. Je l'ai ajouté à la clé de voûte Java locale. – DungeonTiger