在RCP应用程序中拥有RESTful服务

时间:2017-02-22 10:54:55

标签: web-services rest jetty osgi eclipse-rcp

我们现有的eclipse RCP应用程序可作为独立产品使用。在较高的层次上,该产品用于使用其UI配置图像规范,我们可以根据这些配置导出样本图像。 现在我们正在开发另一个具有多个模块的Web应用程序,其中一个模块是开发我们的eclipse RCP应用程序所做的事情。 为了提供用于演示目的的RCP应用程序的QUICK集成,我计划在服务器计算机中单独运行RCP应用程序,并将其静态功能公开为RESTful Web服务。因此,模块应对RCP应用程序进行RESTful调用。

现在我开始尝试在RCP应用程序启动期间嵌入一个用于托管REST服务的jetty服务器,如下所示

enter image description here

enter image description here

但事情是Jetty服务器启动后我无法使用我配置的路径访问TestWebService。如果这是在RCP应用程序中使用RESTful服务的正确方法,那我很困惑。请注意,iam能够使用http://localhost:1002而不是服务来点击服务器。

以下是我点击http://localhost:1002/hello/test时的控制台日志:

enter image description here

1 个答案:

答案 0 :(得分:1)

这是一个非常奇怪的架构,你正在尝试。 我的意思是编写一个RCP应用程序,它监听端口并在其上提供REST服务;这可能会导致进一步的障碍。

相反,我会把它分成两个软件工件:一个RCP应用程序和一个Web应用程序(.war)。

你可以提取一个业务逻辑jar(如果需要,它可以是一个OSGi插件)来控制你的图像处理逻辑。 然后将此插件/ .jar作为webapp中的依赖项包含在内,并通过Web容器(Tomcat,GlassFish等)提供其功能

因此,您的其他(第三个)应用程序将连接到此.war文件提供的Web服务。

opt.1)如果您需要一个正在运行的实例(由于数据库或其他共享资源),那么您的RCP应用程序也必须使用此REST服务。

opt.2)如果没有,那么简单地将包含业务逻辑的.jar /插件编译到您的RCP应用程序中。