Qual è un buon modo per Tomcat di interagire con un'altra applicazione Java in esecuzione sul computer locale

1

Sono nuovo nell'usare Java all'interno di un ambiente web. Al momento ho un'applicazione Java che eseguiamo su una macchina locale, la chiameremo l'app del server. Vogliamo aggiungere la possibilità di comunicare con questa applicazione tramite un'interfaccia RESTful.

Ho giocato con Tomcat e Glassfish e ho qualcosa che funziona, ma sono certo che sto facendo le cose in un modo strano. Ho un listener nell'applicazione web che crea un'istanza della mia applicazione server ogni volta che viene avviato Tomcat.

Quando viene creata una connessione, il servlet acquisisce l'istanza di questa applicazione server in modo che possa interagire con essa e passare i dati a un jsp. Non posso fare a meno di sentire che questo non è un approccio convenzionale.

Sono propenso a eseguire semplicemente il server jar completamente separatamente e ad usare socket sul computer locale affinché i servlet possano interagire, ma non posso fare a meno di pensare che questo sia eccessivo. Mi sono guardato intorno e sembra che RMI potrebbe essere una soluzione, ma non mi è familiare.

Ecco cosa devo essere in grado di fare:

  • Tomcat deve essere in esecuzione per accettare richieste REST
  • Ho bisogno di un modo per l'applicazione web per verificare se l'app del server è in esecuzione
  • Ho bisogno che l'app web sia in grado di ottenere un'istanza dell'app del server in modo da poter chiamare i suoi metodi o almeno inviarla un po 'di JSON

Nel complesso, penso che sia un compito abbastanza semplice, mi sto solo perdendo un po 'cercando di trovare un buon modo per organizzare il mio progetto.

Devo eseguire l'app del server all'esterno dell'ambiente Tomcat e utilizzare solo i socket e alcuni JSON?

Devo eseguire l'app del server al di fuori di Tomcat e utilizzare RMI (richiederà qualche ricerca, ma non è un grosso problema)

Devo mantenere l'app del server nell'ambiente Tomcat come se fosse attualmente?

    
posta Mr. Nivlac 15.07.2015 - 23:29
fonte

2 risposte

2

L'approccio più semplice se puoi accettare gli svantaggi è avere Tomcat come server passivo in modo tale che non contatti mai l'app del server. Tutti i dati fluiscono nell'altro senso inviando periodicamente battiti del cuore a tomcat e recuperando i dati json che hai citato. Gli svantaggi sono che sarà (solo) coerente e quindi dovrai accettare un piccolo ritardo.

L'altro approccio è ospitare un server nell'app del server. Questo può essere un server RMI o un server http. Dal momento che java SE 6 contiene un link che è abbastanza facile da lavorare per la pubblicazione di documenti avanti e indietro. Non ci sono schemi o tutte queste cose, ma serializzate semplicemente i vostri dati su JSON e siete a posto. Una volta che questo server è in esecuzione, connettici semplicemente dal server tomcat.

    
risposta data 16.07.2015 - 10:12
fonte
-2

Usa l'IP esterno per interagire con la macchina del server, significa che puoi passare.

1) avvia il server remoto (tomcat)

2) controlla la rete, se Client e server nella stessa rete usano l'IP interno altrimenti usa l'ip esterno.

    
risposta data 05.08.2015 - 14:15
fonte

Leggi altre domande sui tag