プライマリ・コンテンツに移動
Oracle® Fusion Middleware RESTful管理サービスによるOracle WebLogic Serverの管理
12c (12.2.1.2.0)
E82706-01
目次へ移動
目次

前
次

3 WLS RESTful管理インタフェースの使用

この章では、WebLogic ServerでサポートされているRESTful管理サービスを使用する方法について説明します。共通のドメインとパーティション管理と監視タスクを実行するためにWLS REST APIを使用する方法を示すサンプル・スクリプトは、「ドメイン・レベルのREST API例」「パーティション固有のREST API例」を参照してください。

ここでのトピック

RESTリソースへのアクセス

各RESTリソース・メソッドは、それにアクセスできるユーザー・ロール(管理者、デプロイヤ、オペレータ、モニター)を定めています。

一般的には、次のとおりです。

  • リソースを読み取るには(GETメソッドを使用)、管理者、デプロイヤ、オペレータまたはモニター・ロールである必要があります。

  • リソースを作成するか(POSTおよびDELETEメソッドを使用)、操作を呼び出す(POSTを使用)には、管理者ロールである必要があります。

  • ただし、一部のリソースでは、デプロイヤがアプリケーションとライブラリをデプロイおよびアンデプロイでき、オペレータがサーバーを起動できます。

ユーザーがドメイン・ユーザーである(たとえば、ドメインのデフォルト・セキュリティ・レルムで定義されている)場合、RESTリソースにアクセスするURLはhttp://host:port/managementで始まります。ユーザーがパーティション・ユーザーである(たとえば、そのパーティションのセキュリティ・レルムで定義されている)場合、RESTリソースにアクセスするURLはhttp://host:port/partition_name/managementで始まります。

WebLogic Server Multitenantでのユーザー・ロールの詳細は、『WebLogic Server Multitenantの使用』の、構成および管理のための管理ロールに関する項を参照してください。

WLS Beanの表示

WLS Beanを表示するには、対応するREST URLでHTTP GETメソッドを呼び出します。たとえば、サーバーServer-0の構成を取得する手順は、次のとおりです:

GET http://localhost:7001/management/weblogic/latest/edit/latest/servers/Server-0

GETは、標準WLS RESTレスポンス・ボディを戻します。Beanのプロパティとlinksプロパティを含んでいるJSONオブジェクト、関連リソースへのリンクを含むJSON配列を戻します。

WLS Beanプロパティについて

戻されたJSONオブジェクトは、標準のJavaからJSONへのマッピング(「JSONマッピング」を参照)を使用するWLS Beanのプロパティを含みます(たとえば、通常のプロパティと参照を含み、子を含まない)。また、Beanのアイデンティティを指定するidentityプロパティも含みます。例:

{
  identity: [ "domain", "servers", "Server-0" ],
  name: 'Server-0',
  listenPort: 7001,
  machine: { identity: [ "domain", "machines", "Machine-0" ] }
}

セルフ・リンクと正規のリンク

リソースはすべて、リソースを参照するselfおよびcanonicalトップ・レベル・リンクを含みます。たとえば、サーバーは、指定されたサーバーを参照するselfおよびcanonicalリンクを含んでいます。

{
  links: [
    { rel: "self", href: "http://localhost:7001/management/weblogic/latest/edit/servers/Server-0" }
    { rel: "canonical", href: "http://localhost:7001/management/weblogic/latest/edit/servers/Server-0" }
   ]
}

これらのリンクの相互参照はそのRESTリソースも参照するため、リソースが子になっているツリーの名前(たとえば、editdomainRuntimeserverConfigurationなど)を含みます。

親リンク

ルート・リソースを除いて、リソースはすべて、親リソースへのトップ・レベル・リンクを含みます。リンクのrelプロパティは、parentに設定されています。

コレクションの子はコレクション・リソースへのリンクを戻します。たとえば、サーバーはサーバーのコレクション・リソースへのリンクを戻します。

{
  links: [
    { rel: "parent", href: "http://localhost:7001/management/weblogic/latest/edit/servers" }
   ]
}

同様に、シングルトンの子はコレクション・リソースへのリンクを戻します。たとえば、SSL BeanはサーバーBeanへのリンクを戻します。

{
  links: [
    { rel: "parent", href: "http://localhost:7001/management/weblogic/latest/edit/servers/Server-0" }
  ]
}

セルフ作成フォームのリンク

Beanが作成可能である場合は、オプションのシングルトン(たとえば、レルムのRDBMSSecurityStore)、Beanが現在存在しない場合は、対応する作成フォーム・リリースへのリンクも戻されます。リンクのrelプロパティは、createに設定されています。たとえば、セキュリティ・レルムの裁決プロバイダ上でGETをコールすると、次も戻されます。

{
  links: [
     {
       rel: "create",
       href: "http://localhost:7001/management/weblogic/latest/edit/securityConfiguration/realms/myrealm/adjudicatorCreateForm"
     }
  ]
}

子Beanリンク

WLS Beanの包含プロパティ(たとえば、子)は、RESTリソースを分離するためにマップされるため、JSONレスポンス・ボディのトップ・レベル・リンクとして戻されます。

各リンクのrelプロパティは、Beanプロパティの名前にマップされます。たとえば、Server-0上でGETをコールすると、次が戻されます。

{
  links: [
    // mandatory singleton child:
    {
      rel: "SSL",
      href: "http://localhost:7001/management/weblogic/latest/servers/Server-0/SSL"
    },
    // writable collection of children:
    {
      rel: "networkAccessPoints",
      href: "http://localhost:7001/management/weblogic/latest/edit/servers/Server-0/networkAccessPoints"
    }
  ]
}

子作成フォームのリンク

作成フォーム・リソースへのリンクは、作成できる包含プロパティ(シングルトンとコレクション)に対して戻されます。リンクのrelプロパティは、<singularPropertyName>CreateFormに設定されています。たとえば、Server-0上でGETをコールすると、次も戻されます。

{
  links: [
     {
       rel: "networkAccessPointCreateForm",
       href: "http://localhost:7001/management/weblogic/latest/edit/servers/Server-0/networkAccessPointCreateForm"
     }
  ]
}

シングルトンBean参照リンク

WLS Beanは、各々の非nullシングルトン参照に対してトップ・レベル・リンクを戻します。リンクのrelプロパティは、参照プロパティの名前に設定されます。たとえば、Server-0Machine-0を参照する場合、次のようになります:

{
  machine: [ "machines", "Machine-0" ],
  links: [
    { rel: "machine", href: "http://localhost:7001/management/weblogic/latest/edit/machines/Machine-0" }
  ]
}

Server-0がマシン参照を持たない場合、次のようになります:

{
  machine: null
}

Bean参照コレクション・リンク

WLS Beanは、参照コレクションの各参照に対してネストされたリンクを戻します。リンクのrelプロパティは、selfに設定されています。

たとえば、Application-0がターゲットServer-0およびCluster-0を参照する場合、次のようになります:

{
  targets: [
    {
      identity: ["clusters", "Cluster-0" ],
      links: [ { rel: "self", href: "http://localhost:7001/management/weblogic/latest/edit/clusters/Cluster-0" } ]
    },
    {
      identity: ["servers", "Server-0" ],
      links: [ { rel: "self", href: "http://localhost:7001/management/weblogic/latest/edit/servers/Server-0" } ]
    }
}

操作リンク

リソースは、操作リソースへのトップ・レベル・リンクも戻します。リンクのrelプロパティはactionに設定され、リンクのタイトルは操作の名前に設定されます。たとえば、ServerRuntimeMBeanは次を戻します。

{
  links: [
    {
      rel: "action",
      title: "suspend",
      href: "http://localhost:7001/management/weblogic/latest/domainRuntime/serverRuntimes/Server-0/suspend"
    },
    {
      rel: "action",
      title: "resume",
      href: "http://localhost:7001/management/weblogic/latest/domainRuntime/serverRuntimes/Server-0/resume"
    },
    {
      rel: "action",
      title: "shutdown",
      href: "http://localhost:7001/management/weblogic/latest/domainRuntime/serverRuntimes/Server-0/shutdown"
    }
  ]
}

包含Beanのコレクションの表示

WLS Beanのコレクションを表示するには、対応するREST URLでHTTP GETメソッドを呼び出します。たとえば、すべてのサーバーの構成を取得する手順は、次のとおりです:

GET http://localhost:7001/management/weblogic/latest/edit/servers

GETは、標準WLS RESTレスポンス・ボディを戻します。itemsは子のプロパティを包含します。各アイテムは、その子のリソースにselfおよびcanonicalリンクを埋め込んでいます。

直下の子のみが戻されます。たとえば、サーバー・コレクションを取得する場合、各サーバーのプロパティは戻されますが、サーバーの子(SSLなど)は戻されません。

コレクション・アイテムについて

リソースは、コレクションの各々の子に対してJSONオブジェクトを戻します。これらのオブジェクトは、子のリソース上でのGETのコールから戻されたアイテムと同じデータを含みます。たとえば、ドメインBeanのserversコレクションを取得すると、次が戻されます。

{
  items: [
    { name: "Server-1", listenPort: 7001, ... },
    { name: "Server-2", listenPort: 7003, ... }
  ]
}

コレクション・リンクについて

コレクション・リソースは、次のリンクを戻します。

  • 自身へのselfおよびcanonicalリンク。

  • 親へのリンク。

  • コレクションが書込み可能の場合、対応する作成フォーム・リソースへのリンク。

  • その各々の子への、ネストされたselfおよびcanonicalリンク。

たとえば、ドメインBeanのserversコレクションを取得すると、次が戻されます。

{
  items: [
    {
      name: "Server-1",
      listenPort: 7001,
      links: [
        { rel: "self", href: "http://localhost:7001/management/weblogic/latest/edit/servers/Server-1" }
        { rel: "canonical", href: "http://localhost:7001/management/weblogic/latest/edit/servers/Server-1" }
      ]
    },
    {
      name: "Server-2",
      listenPort: 7005,
      links: [
        { rel: "self", href: "http://localhost:7001/management/weblogic/latest/edit/servers/Server-1" }
        { rel: "canonical", href: "http://localhost:7001/management/weblogic/latest/edit/servers/Server-1" }
      ]
    }
  ]
  links: [
    { rel: "self", href: "http://localhost:7001/management/weblogic/latest/edit/servers" }
    { rel: "canonical", href: "http://localhost:7001/management/weblogic/latest/edit/servers" }
    { rel: "parent", href: "http://localhost:7001/management/weblogic/latest/edit" }
    { rel: "create-form", href: "http://localhost:7001/management/weblogic/latest/edit/serverCreateForm" }
  ]
}

作成フォームの取得

新しいリソースを作成するために作成フォームを取得するには、対応する作成フォームREST URL上でHTTP GETメソッドを呼び出します。たとえば、新しいサーバーを作成するための作成フォームを取得する手順は、次のとおりです:

GET http://localhost:7001/management/weblogic/latest/edit/serverCreateForm

GETは、標準WLS RESTレスポンス・ボディを戻します。作成フォームのプロパティとlinksプロパティを含んでいるJSONオブジェクト(関連リソースへのリンクを含むJSON配列)を戻します。

作成フォーム・プロパティについて

戻されたJSONオブジェクトは、そのタイプの新しいリソースを作成するときに指定される場合がある、各書込み可能プロパティ(通常のプロパティおよび参照)に対するプロパティを含みます。プロパティの値は、そのタイプのBean情報(使用できる場合)からのデフォルト値、またはプロパティのタイプのデフォルト値(たとえば、intの場合は0)のいずれかです。参照プロパティの値は、常にnullです。たとえば、ドメインのserverCreateFormを取得すると、次が戻されます。

{
  name: null, // identity - unique names are not generated
  idleConnectionTimeout: 65, // from the default value in the bean info
  replicationGroup: null, // default value for a String since the bean info does not provide a default value
  machine: null, // singleton reference
  candidateMachines: null, // reference collection
  ...
}

作成フォーム・リンクについて

作成フォームは、次のリンクを戻します。

  • 自身へのselfおよびcanonicalリンク。

  • 親へのリンク。

  • このタイプのリソースを作成するために使用できる、対応するリソースへのcreateリンク。

たとえば、ドメインBeanのserverCreateFormを取得すると、次が戻されます。

{
  links: [
    { rel: "parent", href: "http://localhost:7001/management/weblogic/latest/edit" },
    { rel: "self", href: "http://localhost:7001/management/weblogic/latest/edit/serverCreateForm" },
    { rel: "canonical", href: "http://localhost:7001/management/weblogic/latest/edit/serverCreateForm" },
    { rel: "create", href: "http://localhost:7001/management/weblogic/latest/edit/servers" }
  ]
}

結果のフィルタリング

Bean、コレクション、作成フォーム・リソースGETメソッドは、次の問合せパラメータをサポートしているため、レスポンスからプロパティとリンクを省略できます。

パラメータ名 説明

fields

これらのプロパティのみ戻されます。

excludeFields

これらのプロパティを除くすべてのプロパティが戻されます。

links

これらのrel名を持つリンクのみが戻されます。

excludeLinks

これらのrel名を持つものを除くすべてのリンクが戻されます。

fieldsexcludeFieldsは、linksexcludeLinks同様に、相互に排他的です。値はすべて、カンマで区切られた名前のリストです。

たとえば、サーバーのselfおよびparentリンクと、nameおよびlistenPortプロパティの、取得のみを行う手順は、次のとおりです:

curl ... -X GET http://localhost:7001/management/weblogic/latest/edit/servers/myserver\
  ?fields=name,listenPort\&links=self,parent
{
  links: [
    { rel: "parent", href: "http://localhost:7001/management/weblogic/latest/edit/servers" },
    { rel: "self", href: "http://localhost:7001/management/weblogic/latest/edit/servers/myserver" }
  ],
  name: "myserver",
  listenPort: 7001
}

WLS構成の変更

Beanを作成、変更、削除できるのは、編集ツリー内のみ(.../management/weblogic/<version>/edit/...)です。他のBeanツリーは読取り専用です。

WLS Bean編集はすべて、構成トランザクション内で実行する必要があります。

  • トランザクションをすでに開始している場合、RESTの変更は同じトランザクションで行われます。ユーザーが引き続きトランザクションのコミットまたはロールバックを行います。

  • トランザクションを開始していない場合、RESTリソースがかわりにトランザクションを開始し、変更を試み、変更が行われたかどうかに関係なく、トランザクションをコミットまたはロールバックします(自動トランザクション)。

  • 他のユーザーがトランザクションをすでに開始している場合、RESTリソースはエラーを戻します(構成を変更しません)。

場合によっては、同じトランザクションで複数のBeanへの補完的な変更が行われないかぎり、構成トランザクションをコミットできません。その場合、自動トランザクションを使用せず、明示的にトランザクションを開始および終了する必要があります。

また、クライアントがトランザクションを管理する場合は、各RESTコールが変更を保存します(ただし、アクティブ化はしません)。保存操作時に発生するいくつかのMBean検証があり、障害の原因になることがあります。たとえば、JDBCシステム・リソースを作成する場合、その子JDBCリソース名が設定されるまで、変更を保存できません。このような場合は、saveChanges=false問合せパラメータを使用します。

詳細は、Oracle WebLogic Server RESTful編集リファレンスで、changeManagerリソースを参照してください。

WLS構成Beanの変更

WLS Beanを変更するには、変更する値を含むJSONオブジェクトを構築し、対応するREST URL上でHTTP POSTメソッドを呼び出して、リクエスト・ボディとしてそのJSONオブジェクトを渡します。

たとえば、サーバーのリスニング・ポートと管理ポートを変更する手順は、次のとおりです:

curl ... -d "{
  listenPort: 7007,
  administrationPort: 9007
}" -X POST http://localhost:7001/management/weblogic/latest/edit/servers/Server-0

これは、Beanのプロパティのすべてを毎回渡す必要はなく、Beanの一部のみを変更すればよい点で、HTTP PATCH操作に類似しています。

JSONオブジェクト・リクエスト・ボディについて

変更する値を含むJSONオブジェクトを構築します。一部のWLS Beanプロパティは読取り専用です(たとえば、サーバーの名前)。読取り専用プロパティは無視されます。

Beanのすべてのプロパティを渡す必要はありません。渡されないプロパティはすべて、現在の値を保持します。「暗号化されたプロパティ」で説明されているように、非null値を持つ暗号化された文字列プロパティの場合、GETは値@Oracle_Confidential_Property_Set_V1.1#を戻します。この値をPOSTして戻す場合、プロパティは現在の値を保持します。暗号化されたプロパティの値を変更する場合、たとえば次のように、クリアテキスト文字列に希望の値を設定します。

{ defaultIIOPPassword: "admin123" }

参照を変更するには、そのアイデンティティを渡します。参照コレクションの場合も同様です。これにより、参照コレクションが追加されるのでなく、参照コレクションが置き換えられます。たとえば、サーバーのマシンをMachine-0に、候補マシンをMachine-0およびMachine-1に設定する手順は、次のとおりです:

{
  machine: [ 'machines', 'Machine-0' ] },
  candidateMachines: [
     { identity: [ 'machines', 'Machine-0' ] },
     { identity: [ 'machines', 'Machine-1' ] }
  ]
}

また、参照を削除するにはnullを使用します。たとえば、サーバーのマシンと候補マシンの参照を削除する手順は、次のとおりです:

{
  machine: null,
  candidateMachines: null
}

有効および無効な値を混合して渡すと、有効なものは書き込まれ、無効なものにはエラーが戻され、全体として、RESTメソッドはOKステータス・コードを戻します。例:

curl ... -d "{
  listenPort: 7007,
  administrationPort: 'foo'
}" -X POST http://localhost:7001/management/weblogic/latest/edit/servers/Server-0
HTTP/1.1 200 OK
{
  messages: [
    {
      severity: "FAILURE",
      field: "administrationPort",
      message: "Something about the value needs to be an integer"
    }
  ]
}

この例では、リスニング・ポートは変更されますが、管理ポートは変更されません。メソッドは、OKステータス・コードを戻しました。

複数の編集セッションの使用

前のリリースでは、WLSに複数の変数セッションが導入されました。(『WebLogic Server Multitenantの使用』の、名前付同時編集セッションの管理に関する項を参照してください。)これらの編集セッションは、スコープが指定されています。スコープは、ドメイン・レベル編集セッションに対して1つ、パーティションに対して1つ存在します。各スコープは、デフォルトの編集セッションを持っています。編集セッション名は、スコープ内で一意ですが、複数のスコープにはおよびません。

editツリーのすべてのRESTリソースに対して、使用する編集セッション(スコープの名前とそのスコープ内の編集セッションの名前)を指定する必要があります。

編集セッション・スコープ名は、URLから導出されます。パーティション化されていないREST URLを使用する場合、RESTはドメイン・レベル・スコープを使用します。パーティション化されたREST URLを使用する場合、RESTはそのパーティションのスコープを使用します。

そのスコープ内で、RESTは、使用する編集セッションを認識している必要があります。使用する編集セッションを正確に記述したヘッダーを指定することも、デフォルト・ルールを使用してRESTに選択させることもできます。

クライアント指定の編集セッション

weblogic.edit.sessionヘッダーをリクエストに含めることによって、編集セッションを選択することができます。ヘッダーの値が編集セッション名として使用されます。例:

curl ... -H weblogic.edit.session=MySession ...

各編集セッション・スコープは、defaultという名のデフォルト編集セッションを持っています。スコープのデフォルト編集セッションを明示的に選択する手順は、次のとおりです:

curl ... -H weblogic.edit.session=default ...

デフォルトの編集セッション

weblogic.edit.sessionヘッダーを含めなかった場合、RESTリソースは次のルールを使用して編集セッションを選択します。

  • 現在、スコープにロックされた1つの編集セッションがある場合、RESTはそれを使用します。

  • または、スコープに1つの編集セッションを作成している場合、RESTはそれを使用します。

  • それ以外の場合、RESTはスコープのデフォルト編集セッションを使用します。

WLS構成Beanの作成

新しいBeanのプロパティを含んでいるJSON構造とともにPOSTをコールして、新しいWLS構成Beanを作成します。簡単にするために、対応する作成フォーム・リソースを使用して、様々な書込み可能プロパティのデフォルト値が移入されたテンプレートJSON構造を取得することができます。

WLS構成Beanの作成のためのURL

コレクションの子を作成するには、コレクションのURL(たとえば、http://localhost:7001/management/weblogic/latest/edit/servers)でPOSTをコールします。

オプションのシングルトンの子を作成するには、提案された子のURL(たとえば、http://localhost:7001/management/weblogic/latest/edit/securityConfiguration/realms/myRealm/adjudicator)でPOSTをコールします。

作成フォームを取得するには、対応する作成フォーム・リソース上でGETメソッドをコールします。

http://localhost:7001/management/weblogic/latest/edit/serverCreateForm

および

http://localhost:7001/management/weblogic/latest/edit/securityConfiguration/realms/myRealm/adjudicatorCreateForm

JSONテンプレートの取得

基礎となるWLS Beanは、多くのプロパティのデフォルト値を持っています。通常はこれらのデフォルト値を表示、場合によりカスタマイズし、新しいWLS Beanを作成するために使用します。対応する作成フォーム・リソース上でGETをコールすることによって、これらのデフォルト値を取得できます。例:

curl ... -X GET http://localhost:7001/management/weblogic/latest/edit/serverCreateForm
HTTP/1.1 200 OK
{
    listenPort: 7001,
    ...
  }
}

Beanの作成

WLS構成Beanを作成するには、新しいBeanのプロパティを含んでいるJSONオブジェクト上でPOSTをコールします。

JSONオブジェクトは、可能なプロパティをすべて含んでいる必要はありません。未指定のプロパティはデフォルト値に設定されます。コレクションである子は、すべてコレクション内で一意のアイデンティティを割り当てられる必要があり、たとえば、サーバーは一意の名を必要とします。このため、identityプロパティは、オプションではありません。

レスポンスは、リソースのURLを含んでいるlocationヘッダーを含みます。例:

curl ... -d "{
  name: "Server-1",
  defaultProtocol: "t3s"
}" -X POST http://localhost:7001/management/weblogic/latest/edit/servers
HTTP/1.1 201 Created
Location: http://localhost:7001/management/weblogic/latest/edit/servers/Server-1
curl -X GET http://localhost:7001/management/weblogic/latest/edit/servers/id/Server-1
HTTP/1.1 200 OK
{
  item: {
    identity: [ "domain", "servers", "Server-1" ],
    name: "Server-1",
    defaultProtocol: "t3s", // specified by the caller
    listenAddress: 7001     // not specified by the caller, therefore set to its default value
  }
}

その名前を持つBeanがすでに存在する場合、リソースは障害メッセージに加えてBAD_REQUESTステータス・コードを戻します。例:

curl ... -d "{
  name: "Server-1"
}" -X POST http://localhost:7001/management/weblogic/latest/edit/servers
HTTP/1.1 400 Bad Request
{
  type: "http://oracle/TBD/WlsRestMessageSchema",
  title: "FAILURE",
  detail: "Bean already exists: \"weblogic.management.configuration.ServerMBeanImpl@31fa1656([mydomain]/Servers[Server-1])\"",
  status: 400
}

WLS構成Beanの更新と同様に、有効な値と無効な値を混合して渡すことができます。Beanがサポートしない読取り専用プロパティおよびプロパティは、無視されます。プロパティの設定で例外があった場合、リソースはレスポンスに障害メッセージを追加します。すべてのプロパティを処理した後でなんらかのエラーが発生した場合、リソースは新しいBeanを削除し、BAD_REQUESTステータス・コードを戻そうとします。

例3-1 有効なプロパティと無効なプロパティの混合の例

curl ... -d "{
  name: "Server-1",
  listenPort: abc,
  defaultProtocol: "no-such-protocol",
  adminstrationProtocol: "iiop"
}" -X POST http://localhost:7001/management/weblogic/latest/edit/servers
HTTP/1.1 400 Bad Request
{
  type: "http://oracle/TBD/WlsRestMessagesSchema",
  title: "ERRORS",
  status: 400,
  wls:errorsDetails: [
    {
      type: "http://oracle/TBD/WlsRestMessageSchema",
      title: "FAILURE",
      detail: "no-such-protocol is not a legal value for DefaultProtocol.\
      The value must be one of the following: [t3, t3s, http, https, iiop, iiops]",
      o:errorPat: "defaultProtocol"
    },
    {
      type: "http://oracle/TBD/WlsRestMessageSchema",
      title: "FAILURE",
      detail: "Type mismatch. Cannot convert abc to int",
      o:errorPath: "listenPort"
    }
  ]
}

例3-2 すべての有効プロパティ

curl ... -d "{
  name: "Server-1",
  listenPort: 7003,
  defaultProtocol: "https",
  adminstrationProtocol: "iiop"
}" -X POST http://localhost:7001/management/weblogic/latest/edit/servers
HTTP/1.1 201 Created
Location: http://localhost:7001/management/weblogic/latest/edit/servers/Server-1

WLS構成Beanの削除

対応するWLS Bean(コレクションの子と、オプションのシングルトンである子)を削除するには、REST URL上でHTTP DELETE操作をします。そのBeanへのいかなる参照も削除されます。たとえば、サーバーを削除する手順は、次のとおりです:

curl ... -X DELETE http://localhost:7001/management/weblogic/latest/edit/servers/Server-0

プロパティ設定の有無の管理

MBeanプロパティは、設定されているか未設定かのどちらかです。設定されている場合、値は永続化され(たとえば、config.xmlに)、ロックされています。未設定の場合は、デフォルト値が使用されます。値は、プロパティのタイプのデフォルト値、ハードコードされたデフォルト値または一部のカスタムJavaコードを実行する、計算されたデフォルト値のいずれかです。

デフォルトでは、リソース上でGETをコールすると、プロパティの現在の値を戻します。Stringプロパティの値をnullまたは空の文字列に設定すると、プロパティが設定解除されます(デフォルト値に戻ります)。

RESTでは、プロパティが設定されているかどうかを判断し、プロパティを明示的に設定するか、設定解除します。

リソース取得時にexpandedValues問合せパラメータをtrueに設定すると、各々の値は、setブール値プロパティと、現在の値を保持するvalueプロパティを持つJSONオブジェクトとして戻されます。たとえば、サーバーを取得すると、次が戻されます。

curl ... -X GET \
  http://localhost:7001/management/weblogic/latest/edit/servers/myserver?&expandedValues=true
{
  listenPortEnabled: { set: false, value: true }, // currently not set
  name: { set: true, value: "myserver" }, // currently set
  listenPort: { set: true, value: 7003 } // currently set
}

同様に、expandedValues問合せパラメータを使用して、値を明示的に設定または設定解除できます。たとえば、リスニング・ポートを設定解除して、リスニング・アドレスを空の文字列に設定する手順は、次のとおりです:

curl ... -d "{
  listenPort: { set: false }, // value will be ignored if specified
  listenAddress: { set: true, value: "" }
}" -X POST http://localhost:7001/management/weblogic/latest/edit/servers/myserver?expandedValues=true

操作の呼出し

各WLS Bean操作は、それ自身のREST URLにマップされます。オーバーロードされた操作の場合(たとえば、shutdown()に対するshutdown(int、boolean))、すべてのオーバーロードされた操作が同じURLにマップされ、リソースは、着信する引数を参照して、呼び出す操作を決定します。

操作が入力引数を必要とする場合、各引数のプロパティとともにJSONオブジェクト・リクエスト・ボディを渡すことによって指定します。プロパティの名前は、引数の名前に一致します。

操作が入力引数をとらない場合、JSONオブジェクトをプロパティなしで渡す必要があります。

同様に、操作が値を戻す場合、標準RESTレスポンス・ボディのJSONオブジェクトreturnプロパティで戻されます。操作がvoidである場合、レスポンス・ボディはreturnプロパティを含みません。

基礎となるMBean操作が例外を送出した場合、RESTメソッドは、例外のテキストを含むBAD REQUEST(404)レスポンスを戻します。

例3-3 引数のないvoid操作: void shutdown()

curl ... -d "{}" \
-X POST http://localhost:7001/management/weblogic/latest/domainRuntime/serverRuntimes/Server-0/shutdown
{
  // response does not include a 'return' property since it's a void operation
}

例3-4 複数の引数を持つvoid操作: void shutdown(int timeout, boolean ignoreSessions)

curl ... -d "{ timeout: 500, ignoreSessions: false }" \
-X POST http://localhost:7001/management/weblogic/latest/domainRuntime/serverRuntimes/Server-0/shutdown
{
  // response does not include a 'return' property since it's a void operation
}

例3-5 1つの引数を持つ非void操作: String getURL(String protocol)

curl ... -d "{ protocol: 'http' }" \
-X POST http://localhost:7001/management/weblogic/latest/domainRuntime/serverRuntimes/Server-0/getURL
{
  return: "http://localhost:7003"
}

問合せの使用

REST APIには強力な一括アクセス機能があり、1つのcallで戻せるBeanのツリーを動的に記述できます。各ツリー(たとえば、編集、ドメイン・ランタイムなど)は、ルートsearchリソースを持っています。これらのsearchリソースへの問合せをPOSTできます。問合せは、どのBean(およびプロパティとリンク)を戻すかを示し、示されたとおりに、Beanツリーの一部(「スライス」)を戻します。

一括アクセスは読取りにのみ使用できます。書込みには使用できません。

リソースの検索

各Beanツリーには、一括問合せ用のsearchリソースが含まれます。

「管理サーバー」で、次の手順を実行します。

URL 説明

.../management/edit/search

編集Beanツリー(まだディスクに保存されていない進行中の編集)のスライスを戻します。

.../management/domainConfig/search

ディスクに保存された最後の構成Beanツリーのスライスを戻します(サーバーが現在使用している構成でなく)。

.../management/domainRuntime/search

管理サーバーのドメイン・ランタイムBeanツリー(すべてのサーバーのランタイムBeanツリーを含む)のスライスを戻します。

.../management/serverConfig/search

管理サーバーの構成Beanツリー(管理サーバーの実行対象である構成)のスライスを戻します。

.../management/serverRuntime/search

管理サーバーのランタイムBeanツリーのスライスを戻します。

管理対象サーバー上で:

URL 説明

.../management/serverConfig/search

管理対象サーバーの構成Beanツリー(サーバーの実行対象である構成)のスライスを戻します。

.../management/serverRuntime/search

管理対象サーバーのランタイムBeanツリーのスライスを戻します。

問合せをPOSTしてリソースを検索すると、問合せはツリーのルートBeanで検索を開始します。リソースは、問合せの結果(Beanツリーのその「スライス」)を含むJSONレスポンスを戻します。

オブジェクト問合せ

オブジェクト問合せは、次のように、WLS Bean(あるいは、Beanのコレクション)に対して、どのデータが戻されるべきかを記述しています。

  • Beanのプロパティのうち、どれを戻すか。

  • Beanのリンクのうち、どれを戻すか。

  • Beanの子のうち、どれを戻すか。

  • コレクションの場合、その子のうちどれを戻すか。

検索はすべて、searchリソースのツリーのルートBeanで検索を開始する点に注意してください。たとえば、management/domain/runtimeに問合せをPOSTすると、ドメイン・ランタイム・ツリーのDomainRuntimeMBeanで検索を開始します。

FieldsとExcludeFields

fieldsは、どのBeanプロパティ(たとえば、スカラーと参照)を戻すかを指定します。これは、プロパティ名のJSON文字列配列です。たとえば、ドメインのnameおよびconfigurationVersionを戻す手順は、次のとおりです:

curl ... -d "{ fields: [ 'name', 'configurationVersion' ] }" \
-X POST http://localhost:7001/management/weblogic/latest/edit/search

Beanがサポートしていないプロパティを問合せがリストした場合、問合せのその部分は無視されます(エラーを戻しません)。fieldsが指定されていない場合、すべてのプロパティが戻されます。

excludeFieldsは、戻さないフィールドのリストを指定します。他のプロパティはすべて戻されます。fieldsexcludeFieldsは、排他的です。

問合せのfieldsおよびexcludeFieldsプロパティは、リソース上でGETをコールする場合に指定できるfieldsおよびexcludeFields問合せパラメータを反映している点に注意してください。違いは、問合せパラメータがカンマで区切られた名前を使用し、問合せが名前のJSON配列を使用する点です。

LinksとExcludeLinks

linksは、Beanのリンクのうち、どれを戻すかを指定します。これは、リンクrel名のJSON文字列配列です。たとえば、ドメインのselfおよびserversリンクを戻す手順は、次のとおりです:

curl ... -d "{ links: [ 'self', 'servers' ] }" \
-X POST http://localhost:7001/management/weblogic/latest/edit/search

Beanがサポートしていないリンクを問合せがリストした場合、問合せのその部分は無視されます(エラーを戻しません)。

linksが指定されていない場合、すべてのリンクが戻されます(デフォルトでselfおよびcanonicalリンクのみを戻すコレクションの子を除く)。

同様に、excludeLinksは、戻さないリンクのリストを指定します。他のリンクはすべて戻されます。linksexcludeLinksは、排他的です。

コレクションの子のリンクをすべて戻すには、excludeLinks: []を使用します。

問合せのlinksおよびexcludeLinksプロパティは、リソース上でGETをコールする場合に指定できるlinksおよびexcludeLinks問合せパラメータを反映している点に注意してください。

childrenは、どの子Beanプロパティを戻すかを指定します。これは、プロパティ名が戻す子の名前であり、値がオブジェクト問合せであるJSONオブジェクトです。たとえば、各サーバーの名前およびリスニング・ポートとともにドメインの名前を取得する手順は、次のとおりです:

curl ... -d "{
  fields: [ 'name' ], // only return the domain's name
  children: {
    servers: { // fetch the domain's 'servers' collection
      fields: [ 'name', 'listenPort' ] // only return each server's name and listen port
    }
  }
}" -X POST http://localhost:7001/management/weblogic/latest/edit/search

childrenが指定されていない場合、Beanの子はどれも戻されません。

アイデンティティ

場合により、コレクション内の特定のアイテム(たとえば、myserverおよびServer-0)のみを戻さなければならないことがあります。それぞれのコレクションの子は、そのアイデンティティを指定するプロパティを持っています。通常、これはnameプロパティです。問合せは、このプロパティ名を使用して、コレクションのどの子を戻すかを指定します。これはアイデンティティのJSON文字列配列です。fieldsおよびlinksは、これらの子それぞれに対して、どのプロパティとリンクを戻すかを制御するために使用することもできます。たとえば、サーバーServer-0およびServer-1の名前とリスニング・ポートを戻す手順は、次のとおりです:

curl ... -d "{
  fields: [ 'name' ], // only return the domain's name
  children: {
    servers: { // fetch the domain's 'servers' collection
      names: [ 'Server-0', 'Server-1' ], // only return the children whose 'name' is 'Server-0' or 'Server-1'
      fields: [ 'name', 'listenPort' ] // only return each server's name and listen port
    }
  }
}" -X POST http://localhost:7001/management/weblogic/latest/edit/search

存在しないアイデンティティは無視されます(エラーを戻しません)。同様に、コンテキストがコレクションでない場合、問合せのこの部分は無視されます。デフォルトで、コレクションの子はすべて戻されます。

レスポンス・ボディ

レスポンス・ボディは通常のパターン(URLがBeanとコレクションのどちらに対するものかに応じて、インライン・プロパティまたはitems)に従います。子Beanは、ネストされたプロパティとして戻されます。例:

curl ... -d "{
  fields: [], // don't return any domain level properties
  links: [], // don't return any domain level links
  children: {
    servers: { // fetch the domain's 'servers' collection
      names: [ 'Server-0', 'Server-1' ], // only return the children whose 'name' is 'Server-0' or 'Server-1'
      fields: [ 'name' ], // only return each server's name
      links: [], // don't return any per-server links
      children: {
        SSL: {
          fields: [ 'listenPort' ], // only return each server's SSL listen port
          links: [] // don't return any SSL level links
        }
      }
    }
  }
}" -X POST http://localhost:7001/management/weblogic/latest/edit/search
{code:JavaScript}
HTTP/1.1 200 OK
{
  servers: {
    items: [
      {
        name: "myserver",
        SSL: { listenPort: 7002}
      },
      {
        name: "AnotherServer",
        SSL: { listenPort: 7002}
      }
    ]
  }
}

問合せの例

この例は、実行中のすべてのサーバー上で、特定のアプリケーションのコンポーネント・ランタイムを取得します。サーバー・ランタイムとアプリケーション・ランタイムでは親の名前のみ、コンポーネント・ランタイムではすべてのプロパティを戻します。

curl ... -d "{
  fields: [], links: [], // don't return any domain runtime level properties or links
  children: {
    serverRuntimes: {
      fields: [ 'name' ], links: [], // return each server's name.  don't return any server level links
      children: {
        applicationRuntimes: {
          name: [ 'myapp', 'BasicApp' ], // only return apps 'myapp' and 'BasicApp'
          fields: [ 'name' ], links: [], // return each app's name but no per-app links
          children: {
            componentRuntimes: { links: [] } // return all component runtime properties, but no links
          }
        }
      }
    }
  }
}" -X POST http://localhost:7001/management/weblogic/latest/domainRuntime/search

この例は、すべての実行中サーバーにわたって、一群のアプリケーションのサーブレット・ランタイムとEJBランタイムの情報をすべて取得します。

curl ... -d "{
  links: [],
  fields: [],
  children: {
    serverRuntimes: {
      links: [],
      fields: [ 'name', 'state' ],
      children: {
        applicationRuntimes: {
          name: [ 'myapp', 'BasicApp' ],
          links: [],
          fields: [ 'name', 'healthState' ],
          children: {
            componentRuntimes: {
              links: [],
              fields:[
                'name',
                'healthState',
                'contextRoot',
                'openSessionsCurrentCount',
                'sessionsOpenedTotalCount'
              ],
              children: {
                EJBRuntimes: {
                  links: [],
                  fields: [
                    'EJBName',
                    'type'
                  ],
                  children: {
                    transactionRuntime: {
                      links: [],
                      fields: [
                        'transactionsCommittedTotalCount',
                        'transactionsRolledBackTotalCount',
                        'transactionsTimedOutTotalCount'
                      ]
                    },
                    poolRuntime: {
                      links: [],
                      fields: [
                        'accessTotalCount',
                        'missTotalCount',
                        'destroyedTotalCount',
                        'pooledBeansCurrentCount',
                        'beansInUseCurrentCount',
                        'waiterCurrentCount',
                        'timeoutTotalCount'
                      ]
                    },
                    cacheRuntime: {
                      links: [],
                      fields: [
                        'cachedBeansCurrentCount',
                        'cacheAccessCount',
                        'cacheMissCount',
                        'activationCount',
                        'passivationCount'
                      ]
                    },
                    lockingRuntime: {
                      links: [],
                      fields: [
                        'lockEntriesCurrentCount',
                        'lockManagerAccessCount',
                        'waiterTotalCount',
                        'waiterCurrentCount',
                        'timeoutTotalCount'
                      ]
                    },
                    timerRuntime: {
                      links: [],
                      fields: [
                        'timeoutCount',
                        'cancelledTimerCount',
                        'activeTimerCount',
                        'disabledTimerCount'
                      ]
                    }
                  }
                },
                servlets: {
                  links: [],
                  fields: [
                    'servletName',
                    'contextPath',
                    'reloadTotalCount',
                    'invocationTotalCount',
                    'executionTimeTotal',
                    'executionTimeHigh',
                    'executionTimeLow'
                  ]
                }
              }
            }
          }
        }
      }
    }
  }
}" -X POST http://localhost:7001/management/weblogic/latest/domainRuntime/search

同期操作と非同期操作について

いくつかのMBean操作(たとえば、サーバー・ライフ・サイクルやデプロイメント)は、非同期です。ジョブがいつ完了したかを決定するために監視する必要があるジョブMBeanを戻します。

操作が完了したか、すぐに失敗した場合、非同期MBean操作は200 OK201 Createdまたは400 Bad Requestを戻します。それ以外の場合は202 Acceptedが戻され、作業がいつ完了したかを検出するには、戻されたジョブ・リソースをポーリングする必要があります。RESTはデフォルトで、ベスト・エフォート型試行を行って作業の完了を待機しますが、およそ5分後に戻します。Preferヘッダーを指定して、RESTが作業の完了をどのくらい待機するかを制御できます。

表3-1は、Preferヘッダーの使用を説明しています。

表3-1 Preferヘッダーの使用

ヘッダー 説明

-X Prefer:respond-async

クライアントは、戻されたジョブ・リソースをポーリングします。非同期MBean操作がすぐに完了した場合、RESTは200 OK201 Createdまたは400 Bad Requestを戻します。それ以外の場合は202 Acceptedを戻します。

-X Prefer:wait=#

たとえば、-X Prefer:wait=10

RESTリソースは、最大で指定された秒数までジョブを内部的にポーリングして、非同期MBean操作がその間に完了したら、200 OK201 Createdまたは400 Bad Requestを戻します。それ以外の場合は、クライアントが(GETを介して)ポーリングして作業がいつ完了したかを検出できるRESTタスク・リソースのURLを含むLocationヘッダーとともに、202 Acceptedを戻します。

Preferヘッダーを指定しない場合、非同期MBean操作がおよそ5分以内に完了したら、RESTは200 OK、201 Createdまたは400 Bad Requestを戻し、それ以外の場合は202 Acceptedを戻します。

respond-asyncwaitの両方を指定すると、respond-asyncは無視されます。

同期および非同期操作の例は、「ドメイン・レベルのREST API例」および「パーティション固有のREST API例」を参照してください。

アプリケーションとライブラリのデプロイ

デプロイされたアプリケーションとライブラリは編集ツリーに表示されます。それらをデプロイするにはコレクション上でPOSTを、アンデプロイするにはDELETEをコールします。同様に、デプロイメントMBeanは、サーバー相対パス名をとります。さらに、クライアントからサーバーにファイルをアップロードしてからそれをデプロイし、作成フォーム・リソースを使用してデプロイメントを調査(たとえば、優先名とバージョン番号を決定するために)できます。ドメイン指定およびパーティション指定のアプリケーションのデプロイの例は、「ドメイン・レベルのREST API例」および「パーティション固有のREST API例」を参照してください。