Oracle® Fusion Middleware Oracle Web Services Manager拡張可能アプリケーションの開発 12c (12.2.1.1) E79355-01 |
|
前 |
次 |
この章では、いくつかの一般的な機能と例外処理を実装するために、このAPIを使用する方法について説明します。この付録の内容は次のとおりです。
この項では、カスタム・アサーション・エグゼキュータの内部でパラメータにアクセスするための、各種のインタフェースとメソッドについて説明します。
次の項目が含まれます。
このトピックでは、カスタム・アサーションにパラメータを入力するために使用できるインタフェースとメソッドの一覧を示します。
次のインタフェースおよびメソッドを使用して、カスタム・アサーションにパラメータを入力できます。
IAssertionBindings
IConfig
IPropertySet
getBindings
getConfigs
getPropertySets
getPropertyByName
getValue
このトピックでは、カスタム・アサーション・エグゼキュータの内部で、コンテキスト・プロパティにアクセスするための各種のインタフェースについて説明します。
次の項目が含まれます。
IMessageContextインタフェースを使用して、OWSMコンテキスト・プロパティにアクセスします。
次のインタフェースおよびメソッドを使用して、カスタム・アサーションへのパラメータにアクセスします。
IMessageContext
getServiceURL
getProperty
getAllProperty
この項では、カスタム・アサーション・エグゼキュータの内部で、ステージにアクセスして、リクエスト・メッセージとレスポンス・メッセージを取得するための各種インタフェースについて説明します。
次の項目が含まれます。
OWSMカスタム・セキュリティ・アサーションには、リクエスト、レスポンスおよびフォルトの3つのステージがあります。
これらのステージの詳細を次に示します。
クライアントがリクエストを実行し、そのリクエストがリクエスト先に配信中であるときに、リクエスト・ステージが発生します。
リクエスト先がメッセージを処理し、レスポンスを返しているときに、レスポンス・ステージが発生します。
フォルトの場合に、フォルト・ステージが発生します。
コンテキスト情報(ステージやメッセージなど)はコンテキスト・プロパティを使用して渡され、IMessageContextインタフェースによって取得されます。
コンテキスト・プロパティへのアクセスに使用できるインタフェースとメソッドは、次のとおりです。
IMessageContext
getStage
getRequestMessage
getResponseMessage
XPath式を使用すると、カスタム・アサーション・エグゼキュータの内部で、SOAPメッセージのパーツにアクセスできます。
次の各トピックで、さらに詳しく説明します。
カスタム・ポリシー・エグゼキュータ内のXPath式を使用して、SOAPメッセージのパーツにアクセスできます。
次のSOAPメッセージ例では、ノードarg0の値はjohnです。
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Header/> <S:Body> <ns2:echo xmlns:ns2="http://project1/"> <arg0>john</arg0> </ns2:echo> </S:Body> </S:Envelope>
XPathには、要素、属性、テキスト、ネームスペース、処理の指示、コメントおよびドキュメント・ノードの7種類のノードがあります。XPathでは、パス式を使用してXMLドキュメントのノードを選択します。表4-1は、XPath式の例を示しています。
表4-1 XPath式の例
式 | 説明 |
---|---|
/S:Envelope |
ルート要素S:Envelopeから選択します。 |
/S:Envelope/S:Body |
S:Envelopeの子であるすべてのS:Body要素を選択します。 |
//S:Body |
ドキュメント内のどこにあっても、すべてのS:Body要素を選択します。 |
このトピックでは、ノードarg0の値を特定するためにXPathを使用する例を示します。
次に、例を示します。
//xpath expression that will be used to identify the node arg0 String xpathStr = "/S:Envelope/S:Body/ns2:echo/arg0";
XPath式が参照するいずれかの名前空間に名前空間を定義して、その名前空間コンテキストに追加できます。
次に例を示します。
final DefaultNamespaceContext nsContext = new DefaultNamespaceContext(); nsContext.addEntry("S", "http://schemas.xmlsoap.org/soap/envelope/"); nsContext.addEntry("ns2", "http://project1/"); XPathFactory xpathFact = XPathFactory.newInstance(); XPath xpath = xpathFact.newXPath(); xpath.setNamespaceContext(nsContext);
このトピックでは、HTTPリクエストとHTTPレスポンスのトランスポート・プロパティにアクセスする手順について説明します。
HTTPリクエストとHTTPレスポンスのトランスポート・プロパティにアクセスするには:
資格証明ストア・フレームワーク(CSF)を使用して、資格証明を安全に管理し、資格証明を保存、取得および維持できます。
CSFを構成して使用するには:
注意:
JARファイルoracle.jps_12.1.2/jps-api.jar、oracle.jps_12.1.2/jps-unsupported-api.jar
がclasspathに含まれている必要があります。
カスタム・ポリシー・エグゼキュータのjarに対して、CredentialAccessPermission権限を指定する必要があります。権限付与の詳細は、『Oracle Platform Security Servicesによるアプリケーションの保護』のJavaセキュリティ・ポリシーの権限の設定関する項を参照してください。
このトピックでは、カスタム・アサーション・エグゼキュータで例外を処理するためのWSMExceptionメソッドについて説明します。
次の項目が含まれます。
カスタム・アサーション実行中の例外は、すべてWSMExceptionがカスタム・アサーション・エグゼキュータで処理する必要があります。
IResult execute(IContext mcontext) throws WSMException
このメソッドは、常に、null以外のIResultオブジェクトを返します。ステータス・フィールドは、成功、失敗または他の状態を示します。IResult.getFault()メソッドは失敗の詳細な原因を返すために使用され、成功の場合はnullを返します。
カスタム・アサーション・エグゼキュータのexecuteメソッド内で発生する例外は、まず、WSMExceptionでラップして、実行ステータスをIResult.FAILEDに設定し、generateFaultメソッドでWSMExceptionをスローする必要があります。
この例を次に示します。
IResult execute(IContext mcontext) throws WSMException { IResult result = new Result(); try { .... ..... } catch (Exception e) { WSMException wsmException = new WSMException(e); result.setStatus(IResult.FAILED); generateFault(wsmException); } }