2

Web サービスがデプロイされている JBoss AS があります。この Web サービスへの呼び出しは、別の JBoss AS 内の別の Web サービスへの呼び出しを生成します。SOAP メッセージのヘッダーでいくつかのパラメーターを渡すことに関心があるため、SOAP メッセージが最初の JBoss AS に到着すると、ヘッダーパラメーターを読み取り、それらに対していくつかの操作を実行し、それらをメッセージのヘッダーに配置します。 2 番目の JBoss AS。私は 2 つの SOAPHandler を使用しており、最初に使用する AS でパラメーターを Web サービスに渡します。

public boolean handleMessage(SOAPMessageContext context) { 
... 
//get the parameter from the header
...
context.put("parameter", parameter);
context.setScope("parameter", MessageContext.Scope.APPLICATION);
}

そのため、Web サービスで次のことができます。

parameter = wsContext.getMessageContext().get("parameter").toString();
...
((BindingProvider) service).getRequestContext().put("parameter", parameter);

2 番目の SOAPHandler では、2 番目の AS に向けられたメッセージを管理します。

public boolean handleMessage(SOAPMessageContext context) { 
...
parameter = (String) context.get("parameter");
...
//put the parameter in the header
}

これは機能しますが、新しいメッセージがパラメーターなしで最初の AS に到着した場合、以前のメッセージはコンテキストに残り、古いパラメーターが 2 番目の AS に送信されます。多分これは以下に関連しています:MessageContext.Scope.APPLICATION

4

0 に答える 0