2010-07-31 122 views
5

我有一个独立的Swing应用程序,它使用Hibernate作为它的持久层。我需要将其扩展到三层系统,以便将有多个Swing应用程序和一个中央服务器实例。客户是一个股票交易平台,因此它将包含很多业务逻辑。服务器将主要负责持久性操作和一些业务逻辑。Swing和Java EE服务器

根据我的需求实现服务器的最佳方式是什么? EJB3还是Spring? Swing应用程序与服务器交互的最佳做法是什么?我不想和RMI一起使用,因为它不仅不会过时,而且也不能保证客户端和服务器将在同一个网络上。

回答

1

如果客户端是一个Java客户端,我没有看到使用Web服务的重点(并因此将对象的开销用于XML序列化),我会选择EJB 3.x.

对于我来说,你有一个很好的容器得到的主要好处(超越的性能和可扩展性)是容错和故障转移(包括服务器端和客户端,尤其是无状态会话Bean,如果他们是幂等的)。对于股票交易平台来说,这很重要。

另请注意,使用EJB3并不一定会排除使用Spring(在客户端和/或服务器端)的胶水。

如果需要将服务公开为Web服务(例如,针对另一个非Java客户端),则只需使用JAX-WS批注对其进行注释。

1

我不想和RMI去,因为不 不仅是已经过时

这是不正确的。只要Java在身边,你就会拥有RMI。

您认为EJB正在使用什么来沟通?这是RMI。

也没有保证 客户端和服务器将在 同一网络。

就个人而言,我宁愿春天。您可以使用Web服务或HTTP远程处理来公开您的服务层。

0

与Spring和RMI一起去。如果您的客户端和服务器都是Java,那么它是具有最佳性能和生产力的最佳解决方案。

0

请注意,EJB不一定使用RMI作为传输协议。例如,OpenEJB使用自己的自定义协议。我们通过电线获得约7300 TPS,这非常好。还有一个Spring集成,所以如果你想,你可以用Spring构建服务器,并将Spring bean注入到EJB中,反之亦然:

http://openejb.apache.org/3.0/spring.html