リソースの WADL 文書の提供
開発者は、サード・パーティーがサービスに関して収集できる情報量を制限するために、OPTIONS 要求による Web アプリケーション記述言語 (WADL) 文書の公開を望まない場合もあります。 多くの情報を提供しないことにより、「曖昧さによるセキュリティー」を実現できます。
このタスクについて
デフォルトでは、任意の Java™ API for RESTful Web Services (JAX-RS) URL に対して HTTP OPTIONS 要求を呼び出すことによって、特定のリソースで WADL 文書を要求できます。 ほとんどの HTTP クライアントで OPTIONS 要求を発行できます。
また、org.apache.wink.common.model.wadl.WADLGenerator を使用すると、独自の WADL 文書を作成できます。 WADLGenerator は Java Architecture for XML Binding (JAXB) アノテーション付きオブジェクト・モデルを作成し、@OPTIONS リソース・メソッドのエンティティー応答としてこのモデルを簡単に戻すことができるようにします。 使用しているアプリケーション内のすべてのクラスに関するサービス文書を必要とする場合には、WADLGenerator を使用して WADL 表現を作成できます。 サービス文書があると、理解を深めるのに役立ちます。
以下の例では、WADLGenerator を使用してリソースの JAXB モデルを作成できます。 その後、クライアントがコンシュームする JAXB モデルを戻すことが可能です。
手順
- 使用するすべてのリソース・クラスが含まれる Application サブクラスを注入できます。 このクラスの中で、WADLGenerator に受け渡して、使用するすべてのクラスを生成できます。
- JAXB アノテーション付きオブジェクトである org.apache.wink.common.model.wadl.Application クラスを戻します。JAXB アノテーション付きタイプの JAX-RS MessageBodyWriter は、WADL 文書をクライアントにシリアライズするために使用されます。
例
@javax.ws.rs.Path("myexample")
public class MyResource {
@Context
javax.ws.rs.core.Application app;
@javax.ws.rs.OPTIONS
@Produces("application/vnd.sun.wadl+xml")
public org.apache.wink.common.model.wadl.Application getOptions() {
org.apache.wink.common.model.wadl.Application wadlAppDoc = new WADLGenerator().generate("", app.getClasses());
/* modify the wadlAppDoc JAXB model if you want to add additional information */
return wadlAppDoc;
}
}