BPEL и ошибка selectionFailure

Я новичок в bpel и просто тестирую If-else. Файл bpel, который я создал с помощью eclipse: IfElseSample.bpel

Он успешно развернут без ошибок, но когда я пытаюсь протестировать его, используя простой код, например:

   try {
        tps.bpel.ifelse.IfElseSample_Service service = new tps.bpel.ifelse.IfElseSample_Service();
        tps.bpel.ifelse.IfElseSample port = service.getIfElseSamplePort();
        tps.bpel.ifelse.IfElseSampleRequest payload = new tps.bpel.ifelse.IfElseSampleRequest();
        payload.setInput("John");
        tps.bpel.ifelse.IfElseSampleResponse result = port.process(payload); //Exception  occur here
        System.out.println("Result = "+result);
    } catch (Exception ex) {
        System.out.println("Exception=> "+ex);
    }

Я получил ошибку исключения:

javax.xml.ws.soap.SOAPFaultException: axis2ns6575:selectionFailure

Также здесь находится весь мой проект eclipse. и я использую:

  1. апач-томкэт-7.0.23
  2. апач-ода-война-1.3.5
  3. Eclipse Java EE IDE для веб-разработчиков. Версия: Indigo Service Release 1

Спасибо.


person Ram    schedule 25.12.2011    source источник


Ответы (1)


Стандарт BPEL требует, чтобы переменные были инициализированы до того, как к ним можно будет выполнять запросы XPath. В вашем примере вы присваиваете значения неинициализированной выходной переменной. Поскольку неинициализированная переменная пуста, выражение XPath tns:result не выбирает ни одного узла и, таким образом, выдает selectionFailure. Сначала вам нужно будет инициализировать переменную (например, в действии <assign> в начале). Разработчик Eclipse BPEL может сделать это за вас (обычно он спрашивает, хотите ли вы инициализировать переменную). Код должен выглядеть примерно так:

<bpel:assign>
  <bpel:copy>
    <bpel:from>
      <bpel:literal>
        <payload><tns:result/></payload>
      </bpel:literal>
    </bpel:from>
    <bpel:to>$output.payload</bpel:to>
  </bpel:copy>
</bpel:assign>
person vanto    schedule 27.12.2011
comment
Однако со мной произошла странная вещь: у меня работала одна версия 1.6 моего BPEL, я пытался протестировать некоторые вещи для увеличения в 1.7, но мне это не понравилось, поэтому вернул все обратно к версии 1.6, очистил/опубликовал сервер ode, начал иметь Ошибка selectionFailure, замена автоматически сгенерированной инициализации на исправленную вами (необходимо только изменить имена результатов/выходных данных, так как я изменил их в своем bpel)! Большое спасибо - person RASMiranda; 27.11.2013