Distribuire Java Web Applet con terzi dipendenze del partito
-
02-10-2019 - |
Domanda
ho fatto un applet Java che dipende da alcuni libriaries terze parti, nonché una DLL che viene chiamato tramite JNI. Questi saranno ovviamente non essere installati su computer client. Esiste un modo per confezionare queste terze parti e libriaries DLL esterne all'interno della mia JAR di Applet in modo che possa essere eseguito da qualsiasi client con una base Java installare?
Soluzione
Utilizzando JNI all'interno di un'applicazione web è una ricetta per il bruciore di stomaco, in particolare in Windows.
- È, ovviamente, non può distribuire la DLL all'interno del file WAR e probabilmente richiederà un programma di installazione separato gestito dalla deployer anticipo.
- Si dovrà garantire che il vostro
java.library.path
è configurato correttamente, che solitamente viene effettuata dalle impostazioni del server di applicazione, piuttosto che qualcosa implementabile nel file WAR. - Il modo in cui JNI collega la classe nativa con la libreria sarà causare mal di testa classe Loader, se si tenta di eseguire più di un'istanza di tale applicazione web. Un modo per aggirare questo è quello di spostare il file JAR che contiene in una class loader condiviso (come cartella comune di Tomcat), ma che ha le sue complicazioni.
Altri suggerimenti
Esiste un modo per confezionare questi terzo libriaries partito
In Eclipse, sotto le proprietà del progetto Java (tasto destro), posso fare una:
Export... => Export as Runnable JAR
Poi dico che mettere in valigia le mie dipendenze vaso in quel vaso esportato. Il JAR esportato avrà tutte le sue dipendenze imballati in esso.
alt text http://www.ubuntu-pics.de/bild /97131/selection_016_mg6IDm.png
Non sono un esperto sul tema, ma ci sono soluzioni a tutti questi problemi di lavoro. Potrebbero darvi un mal di testa, ma alcune cose possono essere fatto solo questo modi (e sono abbastanza sicuro che il tuo problema con l'Entrust CSP è uno di quelli).
E 'possibile dare un'occhiata a OpenSign dal OpenOCES progetto . La magia avviene in org.openoces.opensign.client.applet.bootstrap.
Credo anche che JNLPAppletLauncher risolve lo stesso problema, ma non ho alcuna esperienza con i.