如何更改 JNDI bean 中的值?
我在本主题中看到了有关不同应用程序共享会话的解决方案: 在不同应用程序之间共享会话状态的任何方式tomcat?
我已经能够注册 JNDI bean 并在不同的应用程序中获取它。但我真正想要的是在一个应用程序中更改此 bean 的值(将值添加到哈希映射)并在其他应用程序中检索新值,但更改似乎只发生在本地。
有什么解决办法吗?
谢谢
I've seen this solution about sharing session for different applications in this topic:
Any way to share session state between different applications in tomcat?
I´ve been able to register a JNDI bean and get it in different applications. But what I really want is to change a value of this bean (add a value to a hashmap) in one application and to retrieve the new value in other applications, but the change only seems to happen locally.
Is there any solution?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是否尝试过使用 JNDI Context 重新绑定方法?这允许您用新对象替换当前绑定的对象。
Have you tried to use the JNDI Context rebind method? This allows you to replace the currently bound object with a new one.
您是否在所有应用程序中获得相同的 bean,或者容器是否为每个应用程序创建一个新的 bean?
如果您无法让它工作,这里有另一个解决方法:创建另一个 Web 应用程序并使用它来共享状态。将状态转换为可以轻松发送到应用程序的内容(XML 或 JSON)。
如果您稍微小心一点(仅使用输入/输出流和 ISO-8859-1 编码),还应该可以直接序列化 Java 对象并将它们传递到服务器(带有序列化的常见注意事项)。
最后,您可以在同一台计算机上设置一个 RMI 服务器,它提供类似地图的 API 来交换数据。
Do you get the same bean in all apps or does the container create a new bean for each app?
If you can't get it to work, here is another workaround: Create another web app and use that to share state. Convert state into something that you can send easily to the app (XML or JSON).
If you're a bit careful (only use Input/OutputStreams and ISO-8859-1 encoding), it should also be possible to serialize Java objects directly and pass them to the server (with the usual caveats of serialization).
Lastly, you could set up an RMI server on the same machine which offers a map-like API to exchange data.