嗨
,这个问题大约有一岁了,但我刚开始使用 Restlet 并偶然发现了“相同”的问题。我说的是服务器,而不是客户端(正如布鲁诺标记的那样,最初的问题是混合服务器和客户端部分)
我认为这个问题没有完全回答。例如,如果您更喜欢将 Restlet 资源与请求的语义处理分开(将业务逻辑与基础设施分开),那么您很可能需要一些参数,例如 Observer 或回调,等等。别的。所以,正如我所看到的,没有参数可以传输到这个实例化过程中。资源由 Restlet 引擎根据请求实例化。因此我发现没有办法直接传递参数(有吗?)
幸运的是,可以从资源类中访问 Restlet 引擎的 Application 对象,因此也可以访问创建组件、服务器等的类。
在资源类中,我有……。像这样
protected Application initObjLinkage(){
Context cx = this.getContext();
Client cli = cx.getClientDispatcher();
Application app = cli.getApplication() ;
return app;
}
随后,您可以使用反射和接口来访问 Application 类中的方法(仍在资源类中),检查有关此的反射...
Method cbMethod = app.getClass().getMethod("getFoo", parameterTypes) ;
CallbackIntf getmethodFoo = ( CallbackIntf )cbMethod.invoke( app, arguments );
String str = getmethodFoo()
在我的应用程序中,我使用这种机制来访问一个观察者,该观察者将接收到的数据提供给业务逻辑的类。这种方法是我所有资源类的标准,它使它们非常统一、标准化和小。
所以...我只是希望这会有所帮助,并且有 {no/some} 方法可以以更简单的方式做到这一点:)