コンポーネントでこのコードを使用して、複数のルートを作成しました。
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);
Application
Restlet doc は、次のクラスでルーターを使用する例のみを示しています。
public class FirstStepsApplication extends Application {
@Override
public synchronized Restlet createInboundRoot() {
Router router = new Router(getContext());
router.attach("/hello", HelloWorldResource.class);
return router;
}
}
実際にルーターベースのコードを使用すると、存在しない URL にアクセスした場合と同じ効果が得られます。
だから私は尋ねています:
- ルーターベースのアプローチとコンポーネントベースのアプローチで達成すべきことの間に違いはありますか?
- ルーターベースのアプローチを使用してこのコードを機能させることはできますか? 今のところ、私の唯一の解決策は、複数のルーターを廃棄して代わりに複数のコンポーネントを接続することです。これには、より多くのレガシー コードを処理する必要があります。