|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Nov 2004
Messaggi: 88
|
[JAVA] applicazione client/server scambio messaggi
Ciao a tutti, sto realizzando una piccola applicazione client/server in java
per un sistema di prenotazione. In pratica ho immaginato che il client per inviare richieste per la prenotazione invii al server un oggetto "messageObject" con settati i parametri scelti dall'utente attraverso un interfaccia grafica. per inviare i messaggio al server faccio una Codice:
outputStream.writeObject(messageObject); Codice:
outputStream = new ObjectOutputStream(socket.getOutputStream()); quanto ho fatto è corretto?? Un'altra cosa ,è più corretto 1)istanziare un nuovo messageObject ogni volta che c'è una richiesta dal Client verso il server oppure 2)modificare lo stato di messageObject con dei metodi setter,in modo da preparare il messaggio per la nuova richiesta e inviare il tutto? Se è corretto il caso 2 anche il server può settare il messggio in modo da fornire una risposta al client oppure dovrà creare un nuovo messageObject? Grazie |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2004
Messaggi: 691
|
Premesso che secondo me sei perfettamente in linea, ti posso dire due o tre spunti interessanti.
1) Hai mai visto RMI? Invece di costruire un oggetto (che implementa serializable naturalmente) lato client, gestirti tu le socket per l'invio e la ricezione (ricordati che se il client crasha, alt+f4, gli stacchi la lan, il thread sul server che gestiva quella particolare comunicazione non se ne accorge, quindi dovresti implementare un sistema di "ping", ad es ogni tot tempo il server a sua volta manda un messaggio al client per verificare se c'è ancora e prima di fare la read della risposta setti un timeout su quell'ulteriore socket?) etc etc, con RMI puoi chiamare direttamente un metodo del server come se fosse locale. Quindi, metti che sul server hai doStuff(MessageObject messageObject) che chiami dal thread che gestisce la socket con client, una volta che il client ha inviato il messageObject, puoi chiamare doStuff(messageObject), metodo del server, direttamente dal client. 2) E' possibile una gestione della messaggistica tramite JMS? Anche questo ti semplifica notevolmente la parte di comunicazione client/server, socket e quant'altro, e ti assicuro che è estremamente facile da implementare. |
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Apr 2006
Messaggi: 5857
|
Aggiungo che se si ipotizza di usare RMI, allora darei un'occhiata anche a Hessian (http://hessian.caucho.com/)
Facile quanto RMI, anzi forse di più perché non c'è da impostare Java Security ed è multipiattaforma. Esempio io l'ho usato per invocare metodi remoti Java da un client C#. L'unico lato negativo è che quasi tutti gli esempi che troverai richiedono un servlet container (se la tua applicazione server gira dentro un TomCat/JBoss/Glashfish sei già a posto). Hessian si può usare anche senza ma diventa più complicato da gestire (e troverai pochi esempi che spiegano come), io alla fine per fare prima ho usato Jetty come servlet container embedded nella mia applicazione. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:45.