문제

I'm trying to develop a 3-tier architecture distributed java application.

  1. Database Server
  2. Application Server
  3. Thin-Client Swing Applications

I haven't developed this type of applications before. I'm thinking to use java RMI to communicate between application server and thin-client applications. Also I'm gonna use Hibernate framework as ORM tool.

My question is, what are the components I need to deploy such an application.

  1. Do I need some kind of servers like Tomcat or Glassfish?
  2. How can I implement MVC model in such application?
도움이 되었습니까?

해결책

Pretty large question, and there's no real one answer. You really need to determine what are the needs of the app being built.

As far as RMI, you need a server process which provides an RMI host. Glassfish provides one for you. But, if yo're using glassfish, you'd probably want to use JPA / EJB3 as the persistence layer. Which is simply Oracle's TopLink rebadged for the OpenSource world.

I'm not sure Tomcat comes with an RMI layer, although it's been a bit since I've developed for Tomcat in anger. It's first and foremost a servlet engine. If you were looking at a REST interface between client and server, that would be a good choice (although Glassfish provides a servlet engine as well).

If you really want to use Hibernate and you want RMI as the transport between client and server, don't discount Spring. It will have RMI server engines where you define your Spring beans which call into Hibernate. No Application Server required (apart from what Spring provides.

As far as MVC is concerned, from the client perspective you have Swing handling the View, with native Java implementing the Model and Controllers. The Model, in this case, would be DTOs provided by the Services exposed by the RMI Server component. I would think that Hibernate would be limited to the Server process, and there would be little View in the Services. The Model in the Client code would be the DTO's and the surrounding framework which makes the RPCs to the services.

Hope this helps

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top