Newsgroup: it.comp.java
Titolo: Publishing/Subscribe cosa devo usare?

Ciao a tutti,
In un applicazione devo implemetnare la funzione di publishing and
subscribe, ma data la mia ignoranza in materia on saprei cosa devo
usare e soprattutto non saprei come... Avete dei consigli?
In rete googolando un pò ho trovato JMS che però è un componente della
piattaforma Java EE ma io sono vincolato ad utilizzare la Standard
Edition... E' superabile come limitazione?
Ciao a tutti e grazie in anticipo a chi sa dirmi qualcosa
Ciao Marco

 Edition... E' superabile come limitazione?
Infatti jms � un "pezzo" di jee che implementa un servizio di 
messaggistica ("le code"); ti mette a disposizione sia le 'Que' (uno 
invia uno riceve) e anche i 'Topic' (uno invia molti ricevono). A te 
servirebbe un Topic
Non ho capito  per� se � per esercizio (quindi ti devi implementare tu 
la roba) oppure no. In ogni caso, ti pu� esser utile vedere come 
funziona jms perch� il Topic implementa proprio publishing/subscribe
-- 
bye
DKano

 Ciao Marco
Qualche suggerimento lo avrei, ma serve qualche altra indicazione: � per 
un'applicazione di produzione o solo per test/studio? Deve girare su una 
JVM, su singolo host ma pi� VM  o distribuita? E' importante che sia 
conforme a qualche standard, per poter sostituire l'implementazione? ecc...
Ciao.

Rispondo a entrambi
Allora l'applicazione è un sistema distribuito suddiviso
fondamentalmente in 2 parti.
La prima è quella centrale, diciamo il "server". Questo prende
l'elenco dei file che gli utenti mettono in condivisione e genera dei
file torrent che saranno memorizzati su di un disco condiviso.
L'altra parte invece è quella dell'utente generico, e cioè questo
definisce quali sono le cartelle ed i file che vuole condividere ed il
programma si preoccupa di filtrare automaticamente la lista dei
torrent presenti sul "server".
Per il momento l'applicazione è un casino... cioè è' un progetto
d'esame ma se dovessi poi riuscire a venderla non mi dispiacerebbe
come cosa. Inoltre al 50%, dovrei parlare anche con il mio collega di
corso, sarei propenso di rilasciarla sotto Common Creative.
Comunque anche se è un esercizio d'esame è stato il docente a dirmi di
non reinventare la ruota e usare qualcosa di già pronto.
Se posso realizzarla il più conforma possibile agli standard in modo
da poter cambiare l'implementazione del publishing/subscribe senza
traumi è una cosa che farebbe comodo oltre che piacere.
Se servono altre informazioni chiedete pure
Ciao e grazie 1000 ancora

 Ciao e grazie 1000 ancora
Scusa, riassumo: l'applicazione � distribuita, ma pi� che altro � un 
esercizio non critico (diciamo, se anche ogni tanto si pianta, niente 
drammi).
In questo scenario, prova Hazelcast 
http://code.google.com/p/hazelcast/
L'ho un po' studiato ed � veramente impressionate per semplicit�.
I limiti che ci ho trovato sono la mancanza di un sistema di persistenza 
(se si fermato tutti, ma proprio tutti, i nodi, perdi i dati se non 
provvedi da te), la scarsissima configurabilit� in reti complesse (ma, 
d'altra parte, se vogliamo le cose semplici...), la documentazione un 
po' vaga, e qualche bug qua e l� (ma se scrivi all'autore, di solito lo 
sistema in fretta).
Per il resto, metti su il tuo sistema in una decina di righe (vedi 
argomento "Distributed Topic")
Ovviamente, non � in standard JMS.
Se vuoi qualcosa di simile, per� compatibile JMS, prova MantaRay, ma non 
� pi� sviluppato dal 2006 e ho trovato alcuni problemi con Windows Vista.
Ciao.

 
Dimenticavo: il sito � 
http://sourceforge.net/projects/mantaray/
 perch� 
il produttore ha chiuso e non ha pi� un riferimento, il sistema � 
Peer-to-Peer (niente serve centralizzati) e i problemi con vista sono 
legati allo stack IPv6, basta lanciare Java in modo da ignorarlo.
Ri-ciao.

 è più sviluppato dal 2006 e ho trovato alcuni problemi con Windows Vista.
Proveròa darci un'occhiata anche a questo. Sperando che sul pc del mio
collega funzioni... Dato che non usa nulla di stabile... Win 7 +
ubuntu 9.10...
Ciao e grazie 1000 ancora
Marco

 Ri-ciao.
Infatti avevo trovato su sourceforge
Se i problemi sono solo per l'IPv6 non c'è problema
quello è giò disabilitato anche perchè non avendo router e switch
compatibili co ipv6 rallenta la connessione e basta
Ho notato cheentrambi i prodotti che hai citato sono serverless.
ottima cosa!
grazie 1000 ancora
ciao
Marco

 ottima cosa!
Beh, mi sembravano pi� in sintonia con le tue esigenze...
Fammi sapere come ti trovi.
Ciao,
   Marco

> Fammi sapere come ti trovi.
Per il momento ho dato un'occhiata ad hazelcast
Ma non riesco a capire come creare un topic.... Avete qualche
consiglio da darmi??
Ciao
Marco

Marco Capoferri ha scritto:

L'esempio sul sito � abbastanza chiaro:
import com.hazelcast.core.Topic;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.MessageListener;
public class Sample implements MessageListener {
         public static void main(String[] args) {
                 Sample sample = new Sample();
                 Topic topic = Hazelcast.getTopic ("default");
                 topic.addMessageListener(sample);
                 topic.publish ("my-message-object");
         }
         public void onMessage(Object msg) {
                 System.out.println("Message received = " + msg);
         }
}
Il topic lo ottieni dalla classe Hazelcast, una sorta di factory di 
tutte le strutture dati. Tutte le strutture, inclusi topic, in Hazelcast 
sono distribuite, quindi se esegui lo stesso codice su due macchine (o 
in due istanze su una sola macchina, per prova), purch� raggiungibili 
via multicast, le due istanze si collegano allo stesso topic.
Al topic associ una classe che implementa l'interfaccia MessageListener 
e poi invii i messaggi con topic.publish().
Abbastanza semplice, no?

 Abbastanza semplice, no?
Si si abbastanza semplice, ho chiesto per verificare che non stessi
sbagliando e che la connessione su due istanze della stessa macchina
non avvenisse tramite l'utilizzo di una zona di memoria condivisa
della JVM.
Tutto qua.
Ciaoe grazi eancora
Marco