Domanda

Sto cercando il modo migliore per far funzionare il mio programma java desktop in background ( demone / servizio ?) sulla maggior parte delle piattaforme (Windows, Mac OS, Linux [Ubuntu in particolare]).

Per " modo migliore " Spero di trovare un modo per:

  1. richiede una minima quantità di codice specifico per la piattaforma.
  2. non richiede all'utente di fare qualcosa che un utente di computer generico non potrebbe / non farebbe
  3. non essere un porco di risorse.

Comprendo che i miei requisiti potrebbero non essere realistici, ma spero che ci sia una sorta di "best practice" per questo tipo di situazione.

Come andare avanti?

È stato utile?

Soluzione

Puoi usare SystemTray classi e installa la tua app come qualsiasi altra nella piattaforma predefinita.

Per Windows potrebbe essere un'attività pianificata che viene eseguita all'avvio. Per Linux e OSX non lo so (oltre a crontab che è in qualche modo troppo tecnico) ma sono abbastanza sicuro che entrambi abbiano un modo per fare facilmente la stessa cosa.

Sfortunatamente (ad oggi) Apple non ha terminato la porta 1.6.

Non sarà un vero demone, ma un'app come Google Desktop.

Ho sentito che Quartz è una buona opzione. Ma non l'ho mai usato.

Altri suggerimenti

È possibile eseguire un'applicazione Java come servizio (Windows) o daemon (Linux) utilizzando Apache Codice demone Commons .

Struttura

Il demone è composto da 2 parti. Uno scritto in C che rende l'interfaccia al sistema operativo e l'altro in Java che fornisce l'API Daemon.

Piattaforme

Sono supportate entrambe le piattaforme Win32 e UNIX. Per le piattaforme Win32 utilizzare procrun. Per piattaforme simili a UNIX usa jsvc.

Codice Java

Devi scrivere una classe (MyClass) che implementa i seguenti metodi:

* void load(String[] arguments): Here open the configuration files, create the trace file, create the ServerSockets, the Threads
* void start(): Start the Thread, accept incoming connections
* void stop(): Inform the Thread to live the run(), close the ServerSockets
* void destroy(): Destroy any object created in init()

Puoi trasformare qualsiasi programma Java in un servizio / demone usando Java Service Wrapper . Viene utilizzato da più progetti OSS e viene fornito come parte del Gestore del repository Nexus Maven in modo che possa essere installato come servizio pronto all'uso. Per usarlo, tu, l'autore, devi solo creare un file di configurazione e quindi eseguire un semplice file batch per creare il servizio su Windows o copiare uno script init sul runlevel corretto su Linux.

Se non hai bisogno di una soluzione gratuita, puoi utilizzare Advanced Installer (www.advancedinstaller.com), può rendere Win-service e MacOS dal tuo JAR e altro ancora ..

Scopri JDIC, ?? il progetto Java Desktop Integration Components. Supporta l'integrazione desktop come barra delle applicazioni (o equivalente) con un'API multipiattaforma.

Altri hanno menzionato Quartz, che è un programmatore di lavoro aziendale. Può essere leggero, a seconda dei lavori pianificati, ma non ha funzioni intrinsecamente orientate al desktop. Al contrario, molte delle sue funzionalità dipendono dal supporto aziendale come un database relazionale. Se l'applicazione prevede principalmente attività di pianificazione, un servizio Quartz senza testa che esegue lavori, con un client desktop per interagire con il servizio, è un approccio ragionevole.

Il progetto Apache Directory Daemon sembra il miglior modo multipiattaforma per farlo (con Wrapper Java per JSVC sotto POSIX e procrun sotto Windows).

Le persone a volte hanno difficoltà a trovare prunsrv.exe e / o prunmgr.exe (componenti di procrun), non è ben documentato sul sito di Apache, generalmente si trova negli archivi (nota. Dicono che procrun è tomcat5. exe)

per Windows puoi trovarlo qui: http: // archive .apache.org / dist / commons / daemon / binaries / windows / commons-daemon-1.0.7-bin-windows.zip (contiene entrambe le versioni a 32 e 64 bit)

Non è necessario implementare l'interfaccia demone né scaricarla affatto, prunsrv può essere utilizzato per trasformare qualsiasi app in servizio Windows

sfoglia quell'archivio per altre piattaforme

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