2010-08-24 55 views
1

我有一个OSGi目标平台,包括Equinox,Spring框架,Spring DM以及用于我的应用程序的几个自定义捆绑包。我的所有bundle都包含Spring应用程序上下文,并且由Spring OSGi扩展器自动加载。如何使用Spring DM在AWT EventQueue上创建Swing OSGi捆绑包

我的一些Bundle包含Swing ui组件。问题在于Spring OSGi Extender不会在AWT EventQueue上创建这些应用程序上下文,从而导致出现多个UI问题。

到目前为止我发现的唯一解决方法是为spring-osgi-extender创建一个片段包,并配置here中提到的“taskExecutor”。基本上我的自定义taskExecutor实现将所有execute()调用转发到AWT EventQueue。这不是一个好的解决方案,因为我的应用程序中的所有Spring动力捆绑包都将在AWT线程上创建,在启动时减慢ui(并且基本上会因为任何刷新不足而导致我们的启动画面加载状态失效)。

有关如何在AWT EventQueue上创建这些Spring/Swing包的任何想法?

回答

2

我没有直接回答你的问题,但下面的项目应该可以帮助你弄清楚。 http://max-server.myftp.org/trac/pm

+1

我在发布问题后不久发现该项目。这是OSGi Swing应用程序的一个很好的例子,但是,它不使用Spring扩展器在AWT EventQueue上创建它的Spring/Swing包。它使用了一种不太优雅的方法,其中所有Swing类都将其初始化包装在Runnable中,然后在AWT线程上调用它。我有许多Swing类需要在其构造函数中使用此复制/粘贴代码。所以不是一个可行的解决方案。 – 2010-08-25 19:25:21