java - 通过容器 session 管理在 Java 中使用 POJO RPC 比 JBoss 更简单

标签 java serialization jboss distributed rmi

目前,我只知道一种在 Java 中为 POJO 进行 RPC 的方法,并且使用非常复杂的 EJB/JBoss 解决方案。

有没有更好的方法可以使用 RMI 或可以通过网络序列化和发送完整对象的方法,通过更薄的层(在 Java EE 容器内或没有 Java EE 容器内)提供类似的功能?

顺便说一句,我目前对 HTTP/JSON 序列化不感兴趣。

编辑:澄清一下:我正在尝试用更易于在容器级别管理的解决方案替换旧的 EJB 2.1/JBoss 4 解决方案。我需要完全控制数据库(计划使用 iBATIS,这将使我能够非常轻松地使用相当复杂的 SQL),但我唯一想通过网络保留的内容是:

  • 调用查找/数据修改方法(此处为自动序列化)。
  • 透明的 session 控制(身份验证/授权)。我仍然需要看看如何实现这一目标。

当然,这两个项目都必须作为一个整体发挥作用。不应向没有凭据的用户授予访问权限。

因为我不太喜欢编写 Web 应用程序,所以我计划构建一个 GUI(Swing 或 SWT),它仅管理 POJO、执行一些报告并从容器调用方法。我希望序列化尽可能简单。

最佳答案

几乎总是如此,Spring来救援。来自 reference documentation ,您将需要阅读 Chapter 17. Remoting and web services using Spring .

有多种方法可供选择。 Spring 的美妙之处在于您的所有接口(interface)和实现都是普通的 POJO。连接到 RMI 或其他由 Spring 处理的内容。您可以:

  1. Export services using RMI : 可能是最简单的方法;
  2. Use HTTP invoker :如果远程访问是一个问题,这对于防火墙等来说可能比纯 RMI 更好;或
  3. Use Web Services ,在这种情况下我会赞成 JAX-WS over JAX-RPC .

Spring 还有一个额外的好处,它可以轻松、透明地为服务器和客户端进行连接。

我个人会选择(2)或(3)。 HTTP 是网络友好的。在 Web 容器中部署很容易。 Jetty的长期连接使您可以选择通过 HTTP(有效)进行服务器推送。

所有这些方法都允许通过网络发送复杂的对象,但它们在这方面略有不同。您需要考虑您的服务器和客户端是否要单独分发,以及如果更改需要重新分发类文件的接口(interface)是否会出现问题。或者您可以使用定制的序列化解决方案(甚至 XML)来避免这种情况。但这也有问题。

使用 Web 容器可以让您轻松插入 Spring Security ,一开始可能会有点令人畏惧,因为有太多选择。此外,HttpSession 可用于提供请求之间的状态信息。

关于java - 通过容器 session 管理在 Java 中使用 POJO RPC 比 JBoss 更简单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/396569/

相关文章:

java - 将未知数量的数字添加到 arraylist

tomcat - 如何在应用服务器中实现排队?

java - Serenity 管理 webdriver 在最大化窗口中运行

java - 我想在 Java 中使用序列化将 Object 转换为 byte[]

PHP:__toString() 和 json_encode() 不能很好地协同工作

java - 如何反序列化 OSGi 中的实现类

java - EJB : Socket connection pooling

Gradle Ear 插件 : Adding modules without version specifier

java - 需要帮助开始通过 Java 将原始 G3 传真文件转换为 TIFF 格式

Java警告和错误(读取对象)