2

私はWebサービスをホストしています。クライアントが不正な形式のXMLを送信した場合に備えて、シナリオを処理したかった

これが私が作成したハンドラーです

public boolean handleMessage(SOAPMessageContext smc)
{
    Boolean outboundProperty =
        (Boolean)smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);

    SOAPMessage message = null;
    try
    {
               // This handling iss required in case a mal-formed XML is sent.    
               message = smc.getMessage();    
    }
    catch(Throwable t ) 
    { 
          // I want to log the XML in the database
          // But the problem is I don't know how to get the XML
          // as message is null.
    }

}

送信されたXMLに関する情報がないcatch(Throwable t)ブロックに到達します。エラーログテーブルにログインできるのは、不正な形式のXMLがクライアントから送信されたということだけです。

実際の要件:

追跡目的で不正な形式のXMLをログに記録して保存します。

4

1 に答える 1

0

次のコードを使用して、正確な行番号とソープ メッセージの例外を取得してログに記録してください。

public boolean handleMessage(SOAPMessageContext mc) {
    try {
        final SOAPMessage message = mc.getMessage();

        String i = convertToString(message);

        System.out.println(i);

        return true;
    } catch (Exception e) {
        System.out.println(e.getMessage());
//            e.printStackTrace();
        return false;
    }
}

このコードは、不正な形式の SOAP メッセージを処理します。

于 2012-11-06T13:00:15.733 に答える