Java 在Eclipse RCP应用程序中动态加载Webservice捆绑包

Java 在Eclipse RCP应用程序中动态加载Webservice捆绑包,java,eclipse,web-services,osgi,eclipse-rcp,Java,Eclipse,Web Services,Osgi,Eclipse Rcp,下面是我想要做的:我有一个服务器和一个客户端应用程序,它们通过Web服务(SOAP)进行通信 客户机是一个Eclipse RCP应用程序,它使用来自ApacheCXF的DOSIG包。我使用了声明性服务和BundleActivator,如本教程所述: 通过为ApacheCXF包添加autostart条目,我让客户机与服务器连接。问题是,这大大降低了启动速度,因为ApacheCXF需要一段时间来设置服务和所有内容。只有当Apache CXF捆绑包完全启动时,我的UI才会显示出来 我希望在Apache

下面是我想要做的:我有一个服务器和一个客户端应用程序,它们通过Web服务(SOAP)进行通信

客户机是一个Eclipse RCP应用程序,它使用来自ApacheCXF的DOSIG包。我使用了声明性服务和BundleActivator,如本教程所述:

通过为ApacheCXF包添加autostart条目,我让客户机与服务器连接。问题是,这大大降低了启动速度,因为ApacheCXF需要一段时间来设置服务和所有内容。只有当Apache CXF捆绑包完全启动时,我的UI才会显示出来

我希望在ApacheCXF包启动完成之前显示UI。我不会立即需要Web服务,而且无论如何都必须处理丢失的Web服务。因此,我希望我的UI显示出来,然后在Web服务可用时激活功能

因此,我的问题是:

  • 这种方法有意义吗
  • 我如何实现这一点?我想我必须从正在运行的应用程序启动cxf包
  • 您可以使用以下方式启动插件(捆绑包):

    final Bundle bundle = Platform.getBundle(id);
    if (bundle != null)
     {
       if ((bundle.getState() & Bundle.ACTIVE) == 0)
        {
          try
           {
             bundle.start(Bundle.START_TRANSIENT);
           }
          catch (final BundleException ex)
           {
             // Handle error
           }
        }
     }
    

    好吧,我试过了,看起来很有希望。但是bundle是在主线程中启动的,所以我的所有其他操作都必须等到bundle启动之后。有没有一种标准的方法可以在不手动实现线程的情况下异步加载它?您可以使用Eclipse作业在插件中执行主启动处理。作业将在后台线程中运行。非常感谢!我知道我错过了一些东西。我只是从RCP开始,读过/听说过技术,但没有想到乔布斯。这正是我需要的D