使用spring-boot-starter-data-mongodb-reactive 连接Mongodb 异常
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
</dependency>
java.lang.IllegalArgumentException: Prohibited character at position 0
at com.mongodb.internal.authentication.SaslPrep.saslPrep(SaslPrep.java:90) ~[mongodb-driver-core-4.0.5.jar:na]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
|_ checkpoint ⇢ Handler com.bluewhale.simple.spring.webflux.controller.StudentWebFluxController#getAllStudent() [DispatcherHandler]
|_ checkpoint ⇢ HTTP GET "/api/getAllStudent" [ExceptionHandlingWebHandler]
Stack trace:
at com.mongodb.internal.authentication.SaslPrep.saslPrep(SaslPrep.java:90) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.authentication.SaslPrep.saslPrepStored(SaslPrep.java:55) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.ScramShaAuthenticator$ScramShaSaslClient.getAuthenicationHash(ScramShaAuthenticator.java:316) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.ScramShaAuthenticator$ScramShaSaslClient.computeClientFinalMessage(ScramShaAuthenticator.java:182) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.ScramShaAuthenticator$ScramShaSaslClient.evaluateChallenge(ScramShaAuthenticator.java:121) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.SaslAuthenticator$Continuator$1.run(SaslAuthenticator.java:251) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.SaslAuthenticator$Continuator$1.run(SaslAuthenticator.java:246) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.SaslAuthenticator.doAsSubject(SaslAuthenticator.java:207) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.SaslAuthenticator$Continuator.continueConversation(SaslAuthenticator.java:246) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.SaslAuthenticator$Continuator.start(SaslAuthenticator.java:241) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.SaslAuthenticator$2$1.onResult(SaslAuthenticator.java:106) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.SaslAuthenticator$2$1.onResult(SaslAuthenticator.java:98) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.CommandHelper$1.onResult(CommandHelper.java:59) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.CommandHelper$1.onResult(CommandHelper.java:53) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection$2$1.onResult(InternalStreamConnection.java:398) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection$2$1.onResult(InternalStreamConnection.java:375) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback$MessageCallback.onResult(InternalStreamConnection.java:676) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback$MessageCallback.onResult(InternalStreamConnection.java:643) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:513) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:510) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.connection.netty.NettyStream.readAsync(NettyStream.java:232) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection.readAsync(InternalStreamConnection.java:510) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection.access$1000(InternalStreamConnection.java:75) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback.onResult(InternalStreamConnection.java:633) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection$MessageHeaderCallback.onResult(InternalStreamConnection.java:618) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:513) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.InternalStreamConnection$5.completed(InternalStreamConnection.java:510) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.connection.netty.NettyStream.readAsync(NettyStream.java:232) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.connection.netty.NettyStream.handleReadResponse(NettyStream.java:262) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.connection.netty.NettyStream.access$800(NettyStream.java:69) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.connection.netty.NettyStream$InboundBufferHandler.channelRead0(NettyStream.java:321) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.connection.netty.NettyStream$InboundBufferHandler.channelRead0(NettyStream.java:318) ~[mongodb-driver-core-4.0.5.jar:na]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) ~[netty-transport-4.1.55.Final.jar:4.1.55.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-common-4.1.55.Final.jar:4.1.55.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.55.Final.jar:4.1.55.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.55.Final.jar:4.1.55.Final]
at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_332]
at com.mongodb.internal.authentication.SaslPrep.saslPrep(SaslPrep.java:90) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.authentication.SaslPrep.saslPrepStored(SaslPrep.java:55) ~[mongodb-driver-core-4.0.5.jar:na]
at com.mongodb.internal.connection.ScramShaAuthenticator$ScramShaSaslClient.getAuthenicationHash(ScramShaAuthenticator.java:316) ~[mongodb-driver-core-4.0.5.jar:na]
final int codepoint = normalized.codePointAt(i);
// 3. Prohibit
if (prohibited(codepoint)) {
throw new IllegalArgumentException("Prohibited character at position " + i);
}
normalized = " "
问题就找到了,password: 123456
spring:
data:
mongodb:
host: 82.89.27.16
database: Student
username: test
password: 123456
port: 27017
main:
web-application-type: reactive
修改 password 加上""
spring:
data:
mongodb:
host: 82.89.27.16
database: Student
username: test
password: "123456"
port: 27017
main:
web-application-type: reactive
OK , 可以正常访问mongodb啦, 从异常可以看到spring-boot-starter-data-mongodb-reactive 是构建在Netty Stream 之上的,Netty Stream 是基于Netty的,Netty作为网络编程框架是一个好的选择,也是一个好的开始。