在Eclipse RCP应用程序中动态加载Web Service包

时间:2013-09-10 14:40:32

标签: java eclipse web-services osgi eclipse-rcp

这就是我想要做的:我有一个服务器和一个客户端应用程序,通过webservices(SOAP)进行通信。

客户端是Eclipse RCP应用程序,它使用Apache CXF的DOSIG包。我已经使用了本教程中描述的声明式服务和BundleActivator:http://cxf.apache.org/dosgi-ds-demo-page.html

我让客户端通过为Apache CXF包添加自动启动条目来连接服务器。问题是这会大大减慢启动速度,因为Apache CXF需要一段时间来设置服务和所有内容。只有当Apache CXF软件包完全启动时,我的UI才会显示出来。

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

所以我的问题是:

  1. 这种方法有意义吗?
  2. 我该如何实现?我想我必须从正在运行的应用程序启动cxf包吗?

1 个答案:

答案 0 :(得分:3)

您可以使用以下内容启动插件(包):

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
       }
    }
 }