【问题标题】:How to develop stateful servers in Java EE without Jax-ws如何在没有 Jax-ws 的情况下在 Java EE 中开发有状态服务器
【发布时间】:2012-05-26 16:49:26
【问题描述】:

我正在使用 Apache Tomcat 在 Java EE 中开发 Web 服务,到目前为止,我已经编写了一些基本的服务器端方法和一个测试客户端。我可以成功调用方法并获得结果,但是每次调用方法时,都会再次调用服务器构造函数,并且我也无法使用 set 方法修改服务器的实例变量。有没有一种特殊的方法可以在不使用 JAX-WS 或 EJB @Stateful 标签的情况下使我的服务器有状态?

【问题讨论】:

  • 一般来说,使服务器有状态是一个坏主意。您的问题到底是什么(每个请求创建另一个对象应该不是问题)?
  • 好吧,Web 服务将主持一场拍卖,因此它应该从所有客户那里收集出价及其时间戳,并决定出价最高的人。每个客户端都会调用 send bid 方法,这会重复地重新创建服务器。
  • 那么你有一些复杂的初始化步骤?
  • @home 是的,无论客户端是否连接,服务器都应该自己开始拍卖,然后客户端连接并在每一轮拍卖中发送带有时间戳的出价 - 轮次有时间限制-
  • 如果您正在考虑在 Tomcat 上使用 EJB、JAX-WS 和其他 Java EE 技术,请查看 Apache TomEE。

标签: web-services jakarta-ee tomcat stateful


【解决方案1】:

这里有点误解。有状态 EJB 将在一个客户端和服务器之间维护会话,因此 EJB 状态不会在不同客户端之间共享。

您只能将无状态和单例 EJB 公开为 JAX-WS Web 服务。

最好的选择是使用数据库来存储所有出价,并在拍卖结束后选择获胜的。

如果你想使用一个文件也没问题,只要你喜欢玩这样的问题:

  1. 同步多个客户端对该文件的访问
  2. 处理事务性读写
  3. 解决文件损坏问题
  4. 如果你运气不够好,可能会出现一系列其他问题

听起来工作量很大,任何健全的数据库引擎都可以完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2015-02-16
    • 2012-07-11
    • 2017-05-25
    • 1970-01-01
    相关资源
    最近更新 更多