java - 如何在两个应用程序之间共享HashMap

标签 java spring

我有一个HashMap<String,Wallet> , Wallet是bitcoinj的一类。我尝试使用 redisson RMap 将钱包对象保存在 redis 数据库中,我收到 stackOverflow 错误。那么有什么办法可以分享一下HashMap在不同服务器上运行的两个应用程序之间。

这是一个异常(exception):

org.redisson.client.RedisException: Unexpected exception while processing command at org.redisson.command.CommandAsyncService.convertException(CommandAsyncService.java:321) at org.redisson.command.CommandAsyncService.get(CommandAsyncService.java:164) at org.redisson.RedissonObject.get(RedissonObject.java:70) at org.redisson.RedissonMap.put(RedissonMap.java:197) at com.examples.redis.RedissonedBitcoin.main(RedissonedBitcoin.java:27) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:282) at java.lang.Thread.run(Thread.java:748)

Caused by: com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: org.bitcoinj.params.TestNet3Params["genesisBlock"]->org.bitcoinj.core.Block["params"]->org.bitcoinj.params.TestNet3Params["genesisBlock"]-

最佳答案

我认为到目前为止您可以获得的最佳建议(因为根描述非常模糊)是开发一个简单的服务,为客户端提供获取功能。当然你还应该考虑安全性以避免中间人攻击等。

如果你绝对不想走这条路,你可以使用 Chronicle-Map它可以将您的数据保存在硬盘上。另外,如果没有环境限制,您可以准备带有任何内存数据库的专用服务器 Ehcache , Hazelcast , Reddis 您已选择。

希望对你有帮助!

关于java - 如何在两个应用程序之间共享HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44753844/

相关文章:

java - Hibernate 和 mysql 连接太多

java - 在将结果集动态转换为 JSON 时处理空值

java - Spring,显示异常或 404 发生错误的 View

spring - Reactor Mono 与 CompletableFuture

linux - 为什么即使以 root 用户身份运行成功,ant build 也会因 sudo 而失败?

java - Java 中数据规范化的拼写更正

java - 尝试获取 FileOutputStream 时出现异常

java - 多级继承泛型和 Spring 问题 - Java

java - 如何在hibernate和spring中生成这种格式的订单号ORD000001

java - 如何使用 spring 将所有属性读入数组?