Domanda

Sto cercando di capire come distribuire un enorme (40-50 MB) file EAR al server tramite una connessione VPN piuttosto lento. L'EAR contiene progetti EJB e WAR creati in Glassfish, e il 90% della dimensione del file è da librerie di dipendenza esterni utilizzati.

  1. Qualcuno ha avvicinò con una strategia di elegante distribuzione per sistema di produzione da Netbeans, dove la distribuzione (in rete) è fatto soltanto per ciò che è realmente necessario (cioè una sola guerra, non l'intero EAR, o un solo lib, non l'intero librerie sottoprogetto).

  2. In relazione al primo punto, come separare librerie dipendenza esterna dal progetto in Netbeans, in modo che il progetto compila sulla macchina di sviluppo, ma quando si crea l'EAR / WAR / EJB non contiene tutti i JAR di dipendenza , che stanno rendendo enorme.

Forse abbiamo bisogno di scrivere script ant personalizzato? Iniziare a utilizzare Maven?

Grazie a tutti per le risposte cortesi,

Bozo

È stato utile?

Soluzione

Ecco perché è una cattiva idea di spostare le dipendenze di un EAR e in una directory condivisa: mantenendo tutte le dipendenze all'interno dell'orecchio, l'applicazione server è in grado di pulito annullare la distribuzione / ridistribuire quell'orecchio e recuperare lo spazio che utilizzato all'interno del mucchio di JVM (per Sun JVM, il PermGen). Se si sposta alcune dipendenze in una libreria condivisa, si corre il rischio che queste dipendenze manterranno un riferimento concreto a qualche oggetto definito all'interno dell'orecchio. Ciò significa che le classi EAR non possono essere rimossi, e alla fine la vostra applicazione server andrà in crash dopo l'esaurimento dello spazio PermGen.

Il mio suggerimento di SSH basato sul presupposto che "VPN" significa di Windows SMB, che ha un sacco di comunicazione avanti e indietro durante la copia dei file. Utilizzando SSH (o più correttamente, SCP o rsync), è possibile utilizzare l'intera larghezza di banda della connessione.

Se questo è ancora troppo lento, si dovrebbe guardare a cambiare la vostra infrastruttura. Dal VPN implica rete aziendale per me, forse è possibile ottenere un sistema di compilazione impostato sullo stesso segmento di rete del computer di distribuzione. Dal punto di vista dei processi, questa è una di gran lunga migliore idea comunque: non si dovrebbe essere distribuendo costruisce da una workstation sviluppatore. Invece, si dovrebbe verificare l'origine in un ambiente pulito, fare un build, eseguire i test, e quindi distribuire.

Un'alternativa è quella di vedere se il vostro particolare app-servire supporti "orecchie esplosi" -. Se sì, allora avete solo caricare i JAR che sono stati modificati

Altri suggerimenti

Un approccio ragionevole potrebbe essere la costruzione di un orecchio a livello locale, e quindi utilizzare rsync per rispecchiare il file su e poi innescare una ridistribuzione. Come la maggior parte delle parti di un file EAR non cambiano se i vasi sottostanti non si muovono, si otterrà un grande vantaggio dall'algoritmo rsync.

Perché non si copiare i vasetti di libreria a / dir installazione glassfish / GlassFish / domains / domain1 / lib e non lo loro pacchetto nel file ear?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top