2012-05-04 12 views
5

La nostra app è migrata a OSGi, ma ho problemi ad avviarla/debuggarla in Eclipse. Qual è il processo: lo sviluppatore di applicazioni OSGi prevede di configurare l'ambiente Equinox, installare centinaia di pacchetti (jar = bundle?) E avviare dalla console? In altre parole, sta lanciando un'applicazione "hot-plug-gifted" diversa da quella "modular-challengeed"?Esegui/esegui il debug dell'applicazione OSGi in Eclipse

Seconda domanda più concreta. V'è un fascio di bootstrap che dovrebbe prendersi cura di tutto, ma dopo il caricamento gruppo di classi si rallenta e quasi si blocca:

... 
... 
... 
Flat profile of 0.22 secs (16 total ticks): main 

    Interpreted + native Method       
16.7%  1 +  0 java.awt.Toolkit.addAWTEventLi[Loaded java.awt.SentEvent from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
stener 
16.7%  1 +  0 jav[Loaded java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
a.util.regex.Pattern.compile 
16.7%  1 +  0 sun.util.logging.PlatformLogger.<init> 
50.0%  3 +  0 Total interpreted 

    Thread-local ticks: 
62.5% 10    Blocked (of total) 
50.0%  3    Class loader 

... 
... 
... 
[Loaded sun.reflect.Label$PatchInfo from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
[Loaded sun.reflect.MethodAccessorGenerator$1 from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
[Loaded sun.reflect.ClassDefiner from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
[Loaded sun.reflect.ClassDefiner$1 from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
[Loaded sun.reflect.GeneratedMethodAccessor1 from __JVM_DefineClass__] 
[Dynamic-linking native method sun.java2d.DefaultDisposerRecord.invokeNativeDispose ... JNI] 
[Dynamic-linking native method java.lang.ref.Finalizer.invokeFinalizeMethod ... JNI] 

Edit: progredito un po 'dal momento che domanda la pubblicazione

[Loaded sun.reflect.GeneratedMethodAccessor1 from __JVM_DefineClass__] 
[Dynamic-linking native method sun.java2d.DefaultDisposerRecord.invokeNativeDispose ... JNI] 
[Dynamic-linking native method java.lang.ref.Finalizer.invokeFinalizeMethod ... JNI] 
--- new stuff --- 
[Loaded sun.awt.windows.WComponentPeer$2 from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] 
[Dynamic-linking native method sun.awt.windows.WInputMethod.disableNativeIME ... JNI] 

Quindi non è una situazione di stallo, cosa potrebbe renderlo così lentamente escrescente?

risposta

4

Avviare e eseguire il debug in Eclipse dovrebbe essere abbastanza avanzato. Il trucco (a mio avviso) è capire che tutto il supporto Eclipse di cui hai bisogno è etichettato come "plug-in" invece di "OSGi". Imposta una piattaforma di destinazione con tutti i bundle esterni necessari; puoi semplicemente scaricarli in una directory e quindi indirizzare il configuratore della piattaforma di destinazione in quella cartella. La configurazione della piattaforma di destinazione è in Preferenze-> Sviluppo plug-in-> Piattaforma di destinazione. È possibile condividere la piattaforma di destinazione come file .target. Avere una buona piattaforma di destinazione aiuta sia con l'esecuzione che la compilazione.

Per eseguire i pacchetti, fare clic con il tasto destro e scegliere Esegui come -> OSGi Framework (o debug come). È possibile modificare quali bundle sono inclusi nella configurazione di runtime e quali argomenti vengono utilizzati. Ad esempio, potresti voler aggiungere -console. Puoi anche creare un'applicazione per l'esportazione, che ti darà un file config.ini. Una volta che hai un config.ini, i tuoi bundle saranno preinstallati all'avvio di Equinox.