2010-08-24 3 views
1

J'ai une plate-forme cible OSGi composée d'Equinox, de Spring Framework, de Spring DM et de plusieurs bundles personnalisés pour mon application. Tous mes bundles contiennent des contextes d'application Spring et sont donc automatiquement chargés par l'extension Spring OSGi.Comment créer des bundles Swing OSGi sur AWT EventQueue avec Spring DM

Certains de mes ensembles contiennent des composants d'interface utilisateur Swing. Le problème est que Spring OSGi Extender ne crée pas ces contextes d'application sur AWT EventQueue, ce qui entraîne plusieurs problèmes d'interface utilisateur.

La seule solution de contournement que j'ai trouvée jusqu'ici est de créer un paquet de fragments pour le spring-osgi-extender et de configurer le "taskExecutor" comme mentionné here. Fondamentalement, mon implémentation de taskExecutor personnalisée transfère tous les appels execute() vers AWT EventQueue. Ce n'est pas vraiment une bonne solution puisque TOUS les bundles alimentés par Spring dans mon application seront créés sur le thread AWT, ralentissant l'interface utilisateur au démarrage (et tuant fondamentalement notre statut de chargement de l'écran de démarrage car il est affamé).

Des idées sur la façon de créer ces ensembles Spring/Swing sur AWT EventQueue?

Répondre

2

Je n'ai pas de réponse directe à votre question, mais le projet suivant devrait vous aider à le comprendre. http://max-server.myftp.org/trac/pm

+1

J'ai effectivement trouvé ce projet peu de temps après avoir posté la question. C'est un bel exemple d'application OSGi Swing, cependant, il n'utilise pas l'extension Spring pour créer ses bundles Spring/Swing sur AWT EventQueue. Il utilise une approche moins élégante dans laquelle toutes les classes Swing enveloppent leur initialisation dans Runnables, puis l'invoquent sur le thread AWT. J'ai beaucoup de classes Swing qui auraient besoin de ce code de copier/coller dans leurs constructeurs. Donc, pas une solution très réaliste. –

Questions connexes