私はSOAPメッセージを傍受し、どこでそれを行う必要がありますか?
あなたが発信応答を変換するためのエンドポイントの商務ロジックの実行、およびその他のSoapHandler前にSOAPリクエストをキャプチャするSoapHandlerを必要としています。
SoapHandlerクラス(mkyongから抽出した例)
public class CalculatorSoapHandler implements SOAPHandler<SOAPMessageContext>{
@Override
public boolean handleMessage(SOAPMessageContext context) {
Boolean isRequest = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
//for response message only, true for outbound messages, false for inbound
if(!isRequest){
try{
SOAPMessage soapMsg = context.getMessage();
SOAPEnvelope soapEnv = soapMsg.getSOAPPart().getEnvelope();
SOAPHeader soapHeader = soapEnv.getHeader();
//process....
}catch(SOAPException e){
System.err.println(e);
}catch(IOException e){
System.err.println(e);
}
}
//continue other handler chain
return true;
}
@Override
public boolean handleFault(SOAPMessageContext context) {
}
@Override
public void close(MessageContext context) {
}
@Override
public Set<QName> getHeaders() {
}
}
を定義するSOAPハンドラのXMLファイルを作成します
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<javaee:handler-chains
xmlns:javaee="http://java.sun.com/xml/ns/javaee"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<javaee:handler-chain>
<javaee:handler>
<javaee:handler-class>com.CalculatorSoapHandler</javaee:handler-class>
</javaee:handler>
</javaee:handler-chain>
</javaee:handler-chains>
は
@WebService
@HandlerChain(file="handler-chain.xml")
public class Calculator {
を@HandlerChain使用してWebサービスにSOAPハンドラをアタッチCXFやspring-WSのようなjax-wsフレームワークを使用している場合は、documenta特定の設定を表示するには
ありがとうございます。できます! –