使用MongoDB的Spring Boot应用程序使用宽带Wi-Fi(bindexception)时不运行,但使用移动热点Wi-Fi Connection成功运行

发布于 2025-02-12 18:43:40 字数 5227 浏览 0 评论 0原文

我的春季启动应用程序使用MongoDB Spring启动器

    implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'

我的JPA存储库类扩展org.springframework.data.data.mongodb.repository.mongorepository.mongorepository,我的应用程序类使用此注释 - @enablemongongorepositories。我正在使用无服务器的mongodb uri,例如mongodb+srv://:@xyz.abc.mongodb.net/xyz,

问题是当我将Windows 10笔记本电脑Wi-Fi连接到宽带Internet连接时,我会得到“ Java”。 net.bindexception:无法分配请求的地址:连接“(下面的堆栈跟踪)在应用程序启动上移动热点。如何找出Mongo DB客户端使用的冲突端口?

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.mongodb.client.MongoClient]: Factory method 'mongo' threw exception; nested exception is java.io.UncheckedIOException: java.net.BindException: Cannot assign requested address: connect
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.18.jar:5.3.18]
    ... 85 common frames omitted
Caused by: java.io.UncheckedIOException: java.net.BindException: Cannot assign requested address: connect
    at java.base/sun.nio.ch.DatagramSocketAdaptor.connect(DatagramSocketAdaptor.java:120) ~[na:na]
    at java.base/java.net.DatagramSocket.connect(DatagramSocket.java:341) ~[na:na]
    at jdk.naming.dns/com.sun.jndi.dns.DnsClient.doUdpQuery(DnsClient.java:408) ~[jdk.naming.dns:na]
    at jdk.naming.dns/com.sun.jndi.dns.DnsClient.query(DnsClient.java:214) ~[jdk.naming.dns:na]
    at jdk.naming.dns/com.sun.jndi.dns.Resolver.query(Resolver.java:81) ~[jdk.naming.dns:na]
    at jdk.naming.dns/com.sun.jndi.dns.DnsContext.c_getAttributes(DnsContext.java:434) ~[jdk.naming.dns:na]
    at java.naming/com.sun.jndi.toolkit.ctx.ComponentDirContext.p_getAttributes(ComponentDirContext.java:235) ~[na:na]
    at java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:141) ~[na:na]
    at java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:129) ~[na:na]
    at java.naming/javax.naming.directory.InitialDirContext.getAttributes(InitialDirContext.java:171) ~[na:na]
    at com.mongodb.internal.dns.DefaultDnsResolver.resolveAdditionalQueryParametersFromTxtRecords(DefaultDnsResolver.java:114) ~[mongodb-driver-core-4.4.2.jar:na]
    at com.mongodb.ConnectionString.<init>(ConnectionString.java:388) ~[mongodb-driver-core-4.4.2.jar:na]
    at org.springframework.boot.autoconfigure.mongo.MongoPropertiesClientSettingsBuilderCustomizer.applyHostAndPort(MongoPropertiesClientSettingsBuilderCustomizer.java:84) ~[spring-boot-autoconfigure-2.6.6.jar:2.6.6]
    at org.springframework.boot.autoconfigure.mongo.MongoPropertiesClientSettingsBuilderCustomizer.customize(MongoPropertiesClientSettingsBuilderCustomizer.java:54) ~[spring-boot-autoconfigure-2.6.6.jar:2.6.6]
    at org.springframework.boot.autoconfigure.mongo.MongoClientFactorySupport.customize(MongoClientFactorySupport.java:55) ~[spring-boot-autoconfigure-2.6.6.jar:2.6.6]
    at org.springframework.boot.autoconfigure.mongo.MongoClientFactorySupport.createMongoClient(MongoClientFactorySupport.java:49) ~[spring-boot-autoconfigure-2.6.6.jar:2.6.6]
    at org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration.mongo(MongoAutoConfiguration.java:55) ~[spring-boot-autoconfigure-2.6.6.jar:2.6.6]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.18.jar:5.3.18]
    ... 86 common frames omitted
Caused by: java.net.BindException: Cannot assign requested address: connect
    at java.base/sun.nio.ch.Net.connect0(Native Method) ~[na:na]
    at java.base/sun.nio.ch.Net.connect(Net.java:574) ~[na:na]
    at java.base/sun.nio.ch.DatagramChannelImpl.connect(DatagramChannelImpl.java:1243) ~[na:na]
    at java.base/sun.nio.ch.DatagramSocketAdaptor.connectInternal(DatagramSocketAdaptor.java:91) ~[na:na]
    at java.base/sun.nio.ch.DatagramSocketAdaptor.connect(DatagramSocketAdaptor.java:118) ~[na:na]
    ... 107 common frames omitted
    

编辑:现在正在随机工作。成功时,Spring Boot应用程序记录说

2022-07-05 16:35:44.318  INFO 12968 --- [           main] org.mongodb.driver.cluster: Cluster created with id ClusterId{value='XXXXXXXXXXXXXXXXXXXXXX', description='null'} and settings {hosts=[127.0.0.1:27017], srvHost=xxxxxxxxxxxxxxxx.bu2mw.mongodb.net, mode=LOAD_BALANCED, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms'}
2022-07-05 16:35:44.326  INFO 12968 --- [2mw.mongodb.net] org.mongodb.driver.cluster: SRV resolution completed with hosts: [xxxxxxxxxxxxxxxx-lb.bu2mw.mongodb.net:27017]

My Spring boot application uses MongoDB spring boot starter

    implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'

My JPA repository class extends org.springframework.data.mongodb.repository.MongoRepository and my application class uses this annotation - @EnableMongoRepositories. I am using a serverless MongoDB uri like mongodb+srv://:@xyz.abc.mongodb.net/xyz

The problem is when I connect my Windows 10 laptop Wi-Fi to a broadband internet connection, I get a "java.net.BindException: Cannot assign requested address: connect" (stack trace below) on application start-up whereas it works perfectly when I connect my Wi-Fi to my mobile hotspot. How can I find out the conflicting port the mongo dB client is using?

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.mongodb.client.MongoClient]: Factory method 'mongo' threw exception; nested exception is java.io.UncheckedIOException: java.net.BindException: Cannot assign requested address: connect
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.18.jar:5.3.18]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.18.jar:5.3.18]
    ... 85 common frames omitted
Caused by: java.io.UncheckedIOException: java.net.BindException: Cannot assign requested address: connect
    at java.base/sun.nio.ch.DatagramSocketAdaptor.connect(DatagramSocketAdaptor.java:120) ~[na:na]
    at java.base/java.net.DatagramSocket.connect(DatagramSocket.java:341) ~[na:na]
    at jdk.naming.dns/com.sun.jndi.dns.DnsClient.doUdpQuery(DnsClient.java:408) ~[jdk.naming.dns:na]
    at jdk.naming.dns/com.sun.jndi.dns.DnsClient.query(DnsClient.java:214) ~[jdk.naming.dns:na]
    at jdk.naming.dns/com.sun.jndi.dns.Resolver.query(Resolver.java:81) ~[jdk.naming.dns:na]
    at jdk.naming.dns/com.sun.jndi.dns.DnsContext.c_getAttributes(DnsContext.java:434) ~[jdk.naming.dns:na]
    at java.naming/com.sun.jndi.toolkit.ctx.ComponentDirContext.p_getAttributes(ComponentDirContext.java:235) ~[na:na]
    at java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:141) ~[na:na]
    at java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(PartialCompositeDirContext.java:129) ~[na:na]
    at java.naming/javax.naming.directory.InitialDirContext.getAttributes(InitialDirContext.java:171) ~[na:na]
    at com.mongodb.internal.dns.DefaultDnsResolver.resolveAdditionalQueryParametersFromTxtRecords(DefaultDnsResolver.java:114) ~[mongodb-driver-core-4.4.2.jar:na]
    at com.mongodb.ConnectionString.<init>(ConnectionString.java:388) ~[mongodb-driver-core-4.4.2.jar:na]
    at org.springframework.boot.autoconfigure.mongo.MongoPropertiesClientSettingsBuilderCustomizer.applyHostAndPort(MongoPropertiesClientSettingsBuilderCustomizer.java:84) ~[spring-boot-autoconfigure-2.6.6.jar:2.6.6]
    at org.springframework.boot.autoconfigure.mongo.MongoPropertiesClientSettingsBuilderCustomizer.customize(MongoPropertiesClientSettingsBuilderCustomizer.java:54) ~[spring-boot-autoconfigure-2.6.6.jar:2.6.6]
    at org.springframework.boot.autoconfigure.mongo.MongoClientFactorySupport.customize(MongoClientFactorySupport.java:55) ~[spring-boot-autoconfigure-2.6.6.jar:2.6.6]
    at org.springframework.boot.autoconfigure.mongo.MongoClientFactorySupport.createMongoClient(MongoClientFactorySupport.java:49) ~[spring-boot-autoconfigure-2.6.6.jar:2.6.6]
    at org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration.mongo(MongoAutoConfiguration.java:55) ~[spring-boot-autoconfigure-2.6.6.jar:2.6.6]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.18.jar:5.3.18]
    ... 86 common frames omitted
Caused by: java.net.BindException: Cannot assign requested address: connect
    at java.base/sun.nio.ch.Net.connect0(Native Method) ~[na:na]
    at java.base/sun.nio.ch.Net.connect(Net.java:574) ~[na:na]
    at java.base/sun.nio.ch.DatagramChannelImpl.connect(DatagramChannelImpl.java:1243) ~[na:na]
    at java.base/sun.nio.ch.DatagramSocketAdaptor.connectInternal(DatagramSocketAdaptor.java:91) ~[na:na]
    at java.base/sun.nio.ch.DatagramSocketAdaptor.connect(DatagramSocketAdaptor.java:118) ~[na:na]
    ... 107 common frames omitted
    

Edit: It is now working randomly. When successful, the spring boot application logs say

2022-07-05 16:35:44.318  INFO 12968 --- [           main] org.mongodb.driver.cluster: Cluster created with id ClusterId{value='XXXXXXXXXXXXXXXXXXXXXX', description='null'} and settings {hosts=[127.0.0.1:27017], srvHost=xxxxxxxxxxxxxxxx.bu2mw.mongodb.net, mode=LOAD_BALANCED, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms'}
2022-07-05 16:35:44.326  INFO 12968 --- [2mw.mongodb.net] org.mongodb.driver.cluster: SRV resolution completed with hosts: [xxxxxxxxxxxxxxxx-lb.bu2mw.mongodb.net:27017]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

独孤求败 2025-02-19 18:43:40

移动数据IP是动态的&amp; wifi ip静态&amp; amp;不断变化。不经常变化。

您的应用程序似乎在启动上创建了很多连接,由于静态IP而使用WiFi时会引起问题。而另一方面,移动数据具有动态IP&amp;因此,您没有遇到这个问题。

如果是这种情况,请检查您的应用程序。对于Windows,请使用下面的命令检查一旦启动应用程序,使用了多少IP,这将为您提供一个想法。

netstat -ano

如果以上适合您的应用程序,请考虑使用任何可用的数据库连接池库(例如Hikari等)来建立连接,以便您的应用程序创建有限的连接。

Mobile data ip's are dynamic & continuously changes while wifi ip is static & not changes frequently.

Your application seems creating lot of connections on startup which causes issue while using wifi because of static IP ; while on other hand mobile data has dynamic ip & hence you are not experiencing this issue.

Check your application if that is the case. For windows, use below command to check how many ips are in use once you start your application, that will give you an idea.

netstat -ano

If above is correct for your application, consider using any available database connection pool libraries (e.g. Hikari etc.) for establishing connections so that your app will create limited connections.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文