私は GAE で Restlet を使用しようとしています。ガードの後にルート ルーターが続きます。2 つの roleAuthorizer、1 つは管理者用、もう 1 つはユーザー用です。次に、uri クラスとリソース クラスの間のルート用に、roleauthorizer の背後に 2 つのルーター。ルートが機能しないので、それは奇妙です。attachDefault を使用する場合は問題ありませんが、 attach : nothing を使用するルートの場合は問題ありません。
ここに私のコードがあります:
public synchronized Restlet createInboundRoot() {
Router rootRouter = new Router(getContext());
pubRouter = new Router(getContext());
String version="/book/v"+System.getProperty("API_VERSION");
pubRouter.attachDefault(BookRessource.class);
pubRouter.attach(version+"/book",BookRessource.class);
RoleAuthorizer ra1 = new RoleAuthorizer();
ra1.getAuthorizedRoles().add(MyEnroler.DEVELOPER);
ra1.getAuthorizedRoles().add(MyEnroler.ADMINISTRATOR);
ra1.setNext(pubRouter);
rootRouter.attach(version, ra1);
adminRouter = new Router(getContext());
String developerVersion="/admin/v1";
adminRouter.attach(developerVersion+"/developer", DeveloperRessource.class);
adminRouter.attach(developerVersion+"/method",MethodRessource.class);
RoleAuthorizer ra2 = new RoleAuthorizer();
ra2.getAuthorizedRoles().add(MyEnroler.ADMINISTRATOR);
ra2.setNext(adminRouter);
rootRouter.attach(developerVersion, ra2);
ChallengeAuthenticator guard=
new ChallengeAuthenticator( getContext(),ChallengeScheme.HTTP_BASIC,"OPA");
guard.setVerifier(new MyVerifier());
guard.setEnroler(new MyEnroler());
guard.setNext(rootRouter);
return guard;
}
そして私の「web.xml」の抜粋:
<servlet>
<servlet-name>RestletServlet</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RestletServlet</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
これを試してみたい場合: http://domain.appspot.com/api/book/v1/book、404エラーを受け取りました。手伝って頂けますか ?