Java 从Azure Tomcat Webapp连接到MongoDB Atlas:无法查找主机的SRV记录

Java 从Azure Tomcat Webapp连接到MongoDB Atlas:无法查找主机的SRV记录,java,mongodb,azure,mongodb-atlas,srv-record,Java,Mongodb,Azure,Mongodb Atlas,Srv Record,我有一个Azure Webapp,运行在Tomcat 8.5上。该应用程序使用MongoDB进行持久化。我有一个免费的MongoDB Atlas计划,应该为应用程序服务 当我从本地Tomcat运行应用程序(连接到相同的、基于web的Atlas集群)时,一切正常。将应用程序部署到Azure后,出现以下异常: com.mongodb.MongoConfigurationException: Unable to look up SRV record for host cluster0-xxxxx.mo

我有一个Azure Webapp,运行在Tomcat 8.5上。该应用程序使用MongoDB进行持久化。我有一个免费的MongoDB Atlas计划,应该为应用程序服务

当我从本地Tomcat运行应用程序(连接到相同的、基于web的Atlas集群)时,一切正常。将应用程序部署到Azure后,出现以下异常:

com.mongodb.MongoConfigurationException: Unable to look up SRV record for host cluster0-xxxxx.mongodb.net
我正在使用以下连接字符串(也尝试过不使用参数):

和以下代码创建连接:

MongoClient mongoClient = new MongoClient(new MongoClientURI(mongoConnectionString));
我已将MongoDB服务器上的0.0.0.0/0列入白名单

想不出还有什么可以尝试的

完整日志:

07-Apr-2018 20:38:19.323严重[localhost-startStop-1]org.apache.catalina.core.ApplicationContext.log StandardWrapper.Throwable
com.mongodb.mongoConfiguration异常:无法查找主机群集0-ot7ig.mongodb.net的SRV记录
位于com.mongodb.internal.dns.DnsResolver.resolveHostFromSrvRecords(DnsResolver.java:79)
位于com.mongodb.ConnectionString。(ConnectionString.java:321)
位于com.mongodb.MongoClientURI(MongoClientURI.java:234)
位于com.mongodb.MongoClientURI(MongoClientURI.java:216)
访问com.idog.vis.academicalsvisapi.VisServerAppResources.getMongoClient(VisServerAppResources.java:128)
在com.idog.vis.academicalsvisapi.VisServerAppResources.(VisServerAppResources.java:92)
位于com.idog.vis.visapi.VisServerAppBinder.configure(VisServerAppBinder.java:19)
位于org.glassfish.hk2.utilities.binding.AbstractBinder.bind(AbstractBinder.java:187)
位于org.glassfish.hk2.utilities.ServiceLocatorUtilities.bind(ServiceLocatorUtilities.java:187)
在org.glassfish.jersey.inject.hk2.ImmediateHk2InjectionManager.register(ImmediateHk2InjectionManager.java:88)
位于java.lang.Iterable.forEach(Iterable.java:75)
位于org.glassfish.jersey.model.internal.CommonConfig.configureExternalObjects(CommonConfig.java:664)
位于org.glassfish.jersey.model.internal.CommonConfig.configureMetaProviders(CommonConfig.java:633)
位于org.glassfish.jersey.server.ResourceConfig.configureMetaProviders(ResourceConfig.java:823)
位于org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:351)
位于org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$1(ApplicationHandler.java:316)
位于org.glassfish.jersey.internal.Errors.process(Errors.java:316)
位于org.glassfish.jersey.internal.Errors.process(Errors.java:298)
位于org.glassfish.jersey.internal.Errors.processWithException(Errors.java:256)
位于org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:315)
位于org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:282)
位于org.glassfish.jersey.servlet.WebComponent(WebComponent.java:335)
位于org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:178)
位于org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:370)
位于javax.servlet.GenericServlet.init(GenericServlet.java:158)
位于org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183)
位于org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
位于org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4931)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5241)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
位于org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
位于org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
在java.util.concurrent.FutureTask.run(FutureTask.java:266)处
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
运行(Thread.java:748)
原因:javax.naming.CommunicationException:DNS错误[根异常为java.net.SocketTimeoutException:接收超时];剩余名称“\u mongodb.\u tcp.cluster0-ot7ig.mongodb.net”
位于com.sun.jndi.dns.DnsClient.query(DnsClient.java:309)
位于com.sun.jndi.dns.Resolver.query(Resolver.java:81)
位于com.sun.jndi.dns.DnsContext.c_getAttributes(DnsContext.java:434)
位于com.sun.jndi.toolkit.ctx.ComponentDirContext.p_getAttributes(ComponentDirContext.java:235)
位于com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:141)
位于com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:129)
位于javax.naming.directory.InitialDirContext.getAttributes(InitialDirContext.java:142)
位于com.mongodb.internal.dns.DnsResolver.resolveHostFromSrvRecords(DnsResolver.java:60)
... 39多
原因:java.net.SocketTimeoutException:接收超时
在java.net.TwoStacksPlainDatagramSocketImpl.receive0(本机方法)
在java.net.TwoStacksPlainDatagramSocketImpl.receive(TwoStacksPlainDatagramSocketImpl.java:114)
在java.net.DatagramSocket.receive(DatagramSocket.java:812)
位于com.sun.jndi.dns.DnsClient.doUdpQuery(DnsClient.java:418)
位于com.sun.jndi.dns.DnsClient.query(DnsClient.java:208)
... 46多
2018年4月7日20:38:19.323 web应用程序中的[localhost-startStop-1]org.apache.catalina.core.StandardContext.loadOnStartup Servlet[com.idog.vis.academicvisapi.VisServerApp]引发load()异常
java.net.SocketTimeoutException:接收超时
在java.net.TwoStacksPlainDatagramSocketImpl.receive0(本机方法)
在java.net.TwoStacksPlainDatagramSocketImpl.receive(TwoStacksPlainDatagramSocketImpl.java:114)
在java.net.DatagramSocket.receive(DatagramSocket.java:812)
位于com.sun.jndi.dns.DnsClient.doUdpQuery(DnsClient.java:418)
A.
MongoClient mongoClient = new MongoClient(new MongoClientURI(mongoConnectionString));