Есть ли гарантированный способ получить имя операции в пользовательском обработчике мыла?

У меня есть собственный обработчик сообщений SOAP для входящих сообщений, который будет запускать другой код в зависимости от того, какая операция вызывается. Моя первая попытка получить имя операции выглядела примерно так:

public boolean handleMessage(SOAPMessageContext context)
{
    String op = context.get(MessageContext.WSDL_OPERATION);
    ...

Это не удалось, потому что свойствоMessageContext.WSDL_OPERATION кажется, никогда не будет установлен. Затем я попытался использовать это:

public boolean handleMessage(SOAPMessageContext context)
{
    Map headers = (Map)context.get(MessageContext.HTTP_REQUEST_HEADERS);    
    ArrayList SOAPAction = ((ArrayList) headers.get("SOAPAction"));
    String opName = SOAPAction.get(0);
    //opName will be formatted like "urn#myOperation", so the prefix must be removed
    opName = ((opName.replace("\"","").split("#"))[1]);

Это работает, но яЯ обеспокоен тем, что могут быть ситуации, когда свойство заголовка "SOAPAction» ISN»не установлен (или нет даже существует), или не имеет значения, которое яЯ ожидаю этого. Я'Я также немного обеспокоен, потому что я нене знаю, если это "официальный» способ получить имя операции - я понял это, посмотрев на содержимоеcontext в отладчике.

Есть ли лучший способ получить имя операции при обработке входящих сообщений SOAP?

Ответы на вопрос(4)

Ваш ответ на вопрос