我已经创建了 2 个微服务,其中包含 Spring Boot(版本 1.5.1 RELEASE)、Spring Cloud(Edgware.SR3)、Spring Cloud Starter Config(版本 1.4.3 RELEASE)和 Netflix 的 Eureka 命名服务器(Spring Cloud Starter Netflix Eureka Client/Server 1.4.4 RELEASE):
Eureka 客户端是一个简单的 Restful 服务,具有单个@PostMapping
注释方法,该方法接受相当大的对象作为参数(@RequestBody MyObject 对象
)。
Eureka客户端向Eureka服务器成功注册。
然后,在Spring Boot Webflux的帮助下,我尝试在Spring 5中引入的类< code>WebClient的帮助下访问我的Eureka客户端,它是在< code>AsyncRestTemplate类上即兴创作的。我做了如下的事情:
WebClient webClient = WebClient.create();
reactor.core.publisher.Mono result = (Mono) webClient.post()
.uri("http://localhost:8080/eureka-client")
.body(BodyInserters.fromObject(//myComplexObject here))
.retrieve()
.bodyToMono(String.class);
result.subscribe();
在调试中,我发现我在上面代码的最后一行之后得到了OOM异常。
io.netty.handler.codec.EncoderException: java.lang.OutOfMemoryError
下面是完整的堆栈跟踪:
[reactor-http-nio-4] WARN io.netty.util.concurrent.AbstractEventExecutor - A task raised an exception. Task: reactor.ipc.netty.channel.ContextHandler$$Lambda$401/11401686@10ae5a2
reactor.core.Exceptions$ErrorCallbackNotImplemented: io.netty.handler.codec.EncoderException: java.lang.OutOfMemoryError
Caused by: io.netty.handler.codec.EncoderException: java.lang.OutOfMemoryError
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:106)
at io.netty.channel.CombinedChannelDuplexHandler.write(CombinedChannelDuplexHandler.java:348)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738)
at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:816)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:723)
at reactor.ipc.netty.channel.ChannelOperationsHandler.doWrite(ChannelOperationsHandler.java:291)
at reactor.ipc.netty.channel.ChannelOperationsHandler.drain(ChannelOperationsHandler.java:465)
at reactor.ipc.netty.channel.ChannelOperationsHandler.flush(ChannelOperationsHandler.java:191)
at io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:776)
at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:802)
at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:814)
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:794)
at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:831)
at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1051)
at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:300)
at reactor.ipc.netty.http.HttpOperations.lambda$then$0(HttpOperations.java:135)
at reactor.ipc.netty.FutureMono.lambda$deferFuture$0(FutureMono.java:68)
at reactor.ipc.netty.FutureMono$DeferredFutureMono.subscribe(FutureMono.java:134)
at reactor.core.publisher.Mono.subscribe(Mono.java:3008)
at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.drain(MonoIgnoreThen.java:167)
at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:56)
at reactor.core.publisher.Mono.subscribe(Mono.java:3008)
at reactor.core.publisher.FluxConcatIterable$ConcatIterableSubscriber.onComplete(FluxConcatIterable.java:141)
at reactor.core.publisher.FluxConcatIterable.subscribe(FluxConcatIterable.java:60)
at reactor.core.publisher.MonoSourceFlux.subscribe(MonoSourceFlux.java:47)
at reactor.ipc.netty.channel.ChannelOperations.applyHandler(ChannelOperations.java:380)
at reactor.ipc.netty.http.client.HttpClientOperations.onHandlerStart(HttpClientOperations.java:501)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:463)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.OutOfMemoryError
at sun.misc.Unsafe.allocateMemory(Native Method)
at io.netty.util.internal.PlatformDependent0.allocateDirectNoCleaner(PlatformDependent0.java:430)
at io.netty.util.internal.PlatformDependent.allocateDirectNoCleaner(PlatformDependent.java:596)
at io.netty.buffer.PoolArena$DirectArena.allocateDirect(PoolArena.java:764)
at io.netty.buffer.PoolArena$DirectArena.newChunk(PoolArena.java:740)
at io.netty.buffer.PoolArena.allocateNormal(PoolArena.java:244)
at io.netty.buffer.PoolArena.allocate(PoolArena.java:214)
at io.netty.buffer.PoolArena.allocate(PoolArena.java:146)
at io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:324)
at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:185)
at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:176)
at io.netty.buffer.AbstractByteBufAllocator.buffer(AbstractByteBufAllocator.java:113)
at io.netty.handler.codec.http.HttpObjectEncoder.encode(HttpObjectEncoder.java:92)
at io.netty.handler.codec.http.HttpClientCodec$Encoder.encode(HttpClientCodec.java:167)
at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:88)
... 32 more
我的类路径中有杰克逊库,并依靠 spring 来序列化我的复杂对象,同时将其传递给 Restful 服务。我不确定是什么原因造成的。请指点什么?
将其添加到java执行路径中
-Dio.netty.noPreferDirect=真
问题内容: 我正在尝试从中删除一些元素,但即使是最简单的示例,如本答案或本示例中的示例,也将无法使用。 使用法线代替a 并没有帮助。我想念什么?我正在使用Java 7。 问题答案: 返回由原始数组支持的列表。您对列表所做的更改也将反映在您传入的数组中。由于您无法向数组添加或删除元素,因此对列表进行这种创建也是不可能的,这就是调用失败的原因。如果要能够动态添加和删除元素,则需要使用(,等)的不同实现
问题内容: 我的python列表中有以下字符串(来自命令提示符): 进一步将默认编码也更改为utf-16。但是仍然抛出异常如下: 无法确定此类字符串需要哪种转换才能正常工作。 问题答案: 无法使用utf-8,utf-16编码进行解码。 尝试latin-1编码: 或者,指定,以使其不尝试解码字符串。
问题内容: 我有一个像这样的numpy数组: 我想将数组中的数字四舍五入到小数点后两位或三位。我尝试使用numpy.around和numpy.round,但是它们都给我以下错误: 我曾经 和 难道我做错了什么?还有其他方法可以有效地对大型阵列执行此操作吗? 问题答案: 您不能对作为对象的numpy数组进行四舍五入,只要可以将数组安全地转换为float即可更改此值: 对于字符串,unicode,vo
问题内容: 那我在做什么错呢? 但是,我只会 问题答案: 您正在使用而不是python 2,它将输入评估为python代码。 相当于 输入 raw_input 另外,您正在尝试将“烧杯”转换为整数,这没有多大意义。 您可以这样替换您脑海中的输入: 和:
我使用 我编写了一些以块结尾的jruby代码,在运行所有代码后,出现了NullPointerException。但代码以任何其他语句结尾,不会发生异常。 版本:1.7.19 在ARGV。java vars.get变量返回null,因为在BiVariableM中isReceiverIdentical返回falseap.java 在ISReceiver中,此方法只需将接收器与双变量的接收器usgin'
我试图使用JavaCV从我的webcamera.but捕获快照,当我运行下面的代码时,我得到了一个执行。它说找不到com/googlecode/javacpp/Pointer类。我能做些什么来解决这个错误... 例外
下面的电话(我将敏感信息替换为 产生以下错误: Flyway输出:Boxfuse的Flyway 4.2.0 异常在线程"main"java.lang.NoClassDefFoundError: oracle/dms/控制台/DMS控制台在oracle.jdbc.driver.DMSFactory。(DMSFactory.java:44)在oracle.jdbc.driver.物理onnection
问题内容: 我试图学习反思,并且遇到了这个IllegalAccessException。请参见以下代码: 当我尝试运行该程序时,得到以下信息: 我不明白发生了什么。有任何想法吗?提前致谢。 问题答案: 您需要禁止Java语言访问检查,以便使用setAccessible(true)反射地调用另一个类中的私有方法: 此外,启用SecurityManager后,我们需要额外的权限才能调用setAcces