我使用此代码和组件创建了多条路线:
Component component = new Component();
component.getServers().add(Protocol.HTTP, port);
component.getDefaultHost().attach(pair.uriPattern, pair.restlet);
component.getDefaultHost().attach("/heartbeat", new HeartbeatRestlet());
我的心跳代码有效。
但是当我像上面那样使用路由器时pair.restlet
,它不起作用:
Router router = new Router();
Restlet fooHandler = new FooRouter();
Restlet barHandler = new BarRouter();
router.attach("/foo/{fooId}", fooHandler);
router.attach("/bar/{barId1}/{barId2}", barHandler);
Restlet 文档仅给出了使用带有Application
类的路由器的示例:
public class FirstStepsApplication extends Application {
@Override
public synchronized Restlet createInboundRoot() {
Router router = new Router(getContext());
router.attach("/hello", HelloWorldResource.class);
return router;
}
}
实际上,使用我的基于路由器的代码与点击不存在的 URL 具有相同的效果。
所以我问:
- 基于路由器的方法应该实现的目标与基于组件的方法之间有什么区别吗?
- 我可以让这个代码使用基于路由器的方法工作吗?到目前为止,我唯一的解决方案是废弃多个路由器并附加多个组件,这需要处理更多遗留代码。