2010-07-31 14 views
5

Ho un'applicazione Standalone che utilizza Hibernate per il suo livello di persistenza. Ho bisogno di estenderlo a un sistema a tre livelli, in modo che ci siano più istanze dell'applicazione Swing e un server centrale. Il client è una piattaforma di trading azionario, quindi conterrà molte logiche di business. Il server sarà responsabile principalmente delle operazioni di persistenza e di alcune logiche di business.Server Swing e Java EE

Quale sarebbe il modo migliore per implementare il server per le mie esigenze? EJB3 o Spring? Qual è la migliore pratica per le applicazioni Swing per interagire con un server? Non voglio andare con RMI poiché non solo sta diventando obsoleto, ma non c'è alcuna garanzia che i client e il server si trovino sulla stessa rete.

risposta

1

Se il client è un client Java, non vedo il punto di utilizzare i servizi Web (e quindi avere il sovraccarico dell'oggetto sulla serializzazione XML) e vorrei andare su EJB 3.x.

Per me, i maggiori benefici (al di là di prestazioni e scalabilità), che si ottiene con un buon contenitore sono fault-tolerance e fail-over (sia sul lato server e lato client, in particolare con i chicchi di Stateless Session se sono idempotenti). Per una piattaforma di trading azionario, questo è importante.

Si noti inoltre che l'utilizzo di EJB3 non esclude necessariamente l'utilizzo di Spring per la colla (lato client e/o lato server).

E se dovesse sorgere la necessità di esporre i servizi come servizi Web (ad esempio per un altro client non Java), basta annotarli con annotazioni JAX-WS.

1

Non voglio andare con RMI dal momento che non solo è diventando obsoleto

Questo non è affatto vero. Finché Java è in giro, avrai RMI.

E cosa pensi che gli EJB stiano usando per comunicare? È RMI.

ma anche non v'è alcuna garanzia che i client e il server saranno stessa rete.

Personalmente, preferirei Spring. È possibile esporre il livello di servizio tramite servizi Web o servizi remoti HTTP.

0

Vai con molla e RMI. Se il tuo client e server sono entrambi Java, è la soluzione migliore con le migliori prestazioni e produttività.

0

Si noti che gli EJB non utilizzano necessariamente RMI come protocollo di trasporto. Ad esempio, OpenEJB utilizza il proprio protocollo personalizzato. Otteniamo circa 7300 TPS sul filo che è abbastanza buono. V'è un'integrazione di Spring e quindi se si voleva, si potrebbe costruire il server con la primavera e iniettare i bean Spring in EJB e viceversa:

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