BPEL и selectionFailure ошибка - PullRequest
       15

BPEL и selectionFailure ошибка

4 голосов
/ 25 декабря 2011

Я новичок в 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

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

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

Спасибо.

1 Ответ

3 голосов
/ 27 декабря 2011

Стандарт 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>
...