セキュリティ設定

Curl ORBは、クライアントからアクセスできるサービスクラスを制限するすることができます。これには、サーバのweb.xmlの設定と@RemoteServiceアノテーションで制限できます。(WEB-INF/web.xml)

まず、アプリケーションの環境として、以下のようにweb.xmlのcontext-paramにnone, development, test, productionを設定します。

  <context-param>
    <param-name>com.curlap.orb.environment</param-name>
    <param-value>development</param-value>
  </context-param>

次に公開したいサービスクラスに@RemoteServiceアノテーション(com.curlap.orb.securityパッケージ)を指定します。@RemoteServiceアノテーションの引数には、列挙型であるEnvironment(com.curlap.orb.securityパッケージ)を指定します。Environmentには、DEVELOPMENT, TEST, PRODUCTIONを指定できます。サンプルを以下に記載します。

@RemoteService(Environment.DEVELOPMENT)
public class Foo {

  // ….

}

この@RemoteService(Environment.DEVELOPMENT)の意味はweb.xmlに指定した環境がdevelopementの際、クライアントからアクセス可能という意味です。またこの例の場合、環境がtest, productionの場合はアクセスできないという意味となります。また、もう一つの例をあげますと、@RemoteService(Environment.PRODUCTION)を指定した場合は、環境がdevelopment, test, productionどれでもクライアントからアクセスできます。これを以下の表にまとめました。

アプリケーション環境 説明 アクセス可能なサービスの@RemoteServiceに指定するEnvironment
none 非セキュリティ設定 すべてアクセス可能(@RemoteServiceアノテーションも不要)
development 開発環境用 Environment.DEVELOPMENT, Environment.TEST, Environment.PRODUCTION
test テスト環境用 Environment.TEST, Environment.PRODUCTION
production 本番環境用 Environment.PRODUCTION

 注意)none以外は@RemoteServiceアノテーションが必要です。
 注意)@RemoteServiceのように引数を省略した場合は、@RemoteService(Environment.PRODUCTION)と同等になります。

ちなみに、コード生成ツールはdevelopment環境のみ利用可能です。