Restlet 获取应用

Restlet obtaining Application

在 Restlet 2.3 中,获得 Application 的推荐方法是什么?

docs 表明有一个静态方法 Application.getCurrent() 这意味着可以获得执行 Application 是可能的。但是,这需要从执行中进行调用 Application.

假设我有几个应用程序,它们都是 运行:

public class ApplicationA extends Application {...}

public class ApplicationB extends Application {...}

是否可以从 ApplicationB 获得 ApplicationAApplication

这取决于您配置 Restlet 的方式 "application" 但由于您是根据应用程序实例定义路由的,因此您可以将一个注入另一个,如下所述:

Component c = new Component();
(...)

MyApplication1 app1 = new MyApplication1();
c.getDefaultHost().attach("/app1", app1);

MyApplication1 app2 = new MyApplication2(app1);
c.getDefaultHost().attach("/app1", app2);

(...)

您会注意到您还可以在运行时内省您的应用程序。 Restlet 的 APISpark 扩展做了类似的事情。请参阅 class org.restlet.ext.apispark.internal.introspection.application.ComponentIntrospectororg.restlet.ext.apispark.internal.introspection.application.ComponentIntrospector

为什么你的应用程序需要这样的功能?只是为了确保给出正确答案;-)

已编辑

您可以在地址 https://github.com/templth/restlet-Whosebug/tree/master/restlet/test-restlet-application-manager.

找到您的用例的示例应用程序

希望对你有帮助, 蒂埃里