Обработка контроллера Rails как HTML вместо SOAP действием INVOKE (BPEL)

Я создал простой веб-сервис, объединив только две строки. Я создал этот веб-сервис с помощью драгоценного камня Wash_out. Итак, мой веб-сервис находится на моем сервере rails.

контроллер с методом concat:

class ContextserverController < ApplicationController
  include WashOut::SOAP

  soap_service namespace: 'urn:WashOut', wsdl_style: 'document'

  soap_action "concat",
    :args   => { :concatRequest => {:a => :string, :b => :string }},
    :return => {:result => :string}

  def concat
    # something I want to do in ruby
    puts "*******************************************************************"
    puts "************************   CONCAT   *******************************"
    puts "*******************************************************************"

    puts params
    puts params[:concatRequest][:a]
    puts params[:concatRequest][:b]
    result = params[:concatRequest][:a] + params[:concatRequest][:b]
    puts "ERGEBNIS: " + result
    puts "*******************************************************************"
    # and then send response to BPEL process
    render :soap => ( { :result => result } )
  end
end

С другой стороны, у меня есть процесс BPEL, в котором я хочу ВЫЗВАТЬ этот веб-сервис. Когда я хочу вызвать процесс...

[INVOKE] Failure during invoke: Error sending message (mex={PartnerRoleMex#hqejbhcnphraka328skerr [PID {http://localhost:8080/test}TestProcess-5609] calling [email protected](...) Status ASYNC}): SOAP message MUST NOT contain a Document Type Declaratio
[BpelRuntimeContextImpl] ActivityRecovery: Registering activity 15, failure reason: Error sending message (mex={PartnerRoleMex#hqejbhcnphraka328skerr [PID {http://localhost:8080/test}TestProcess-5609] calling [email protected](...) Status ASYNC}): SOAP message MUST NOT contain a Document Type Declaratio on channel 27

В журнале сервера rails я вижу следующее:

Processing by ContextserverController#concat as HTML
#<ActionDispatch::Http::Headers:0x007fc82a9c56b8>
*******************************************************************
************************   CONCAT   *******************************
*******************************************************************
{}
Completed 500 Internal Server Error in 12ms

Я думаю, что проблема заключается в обработке как HTML. Если я протестирую веб-службу с помощью eclipse Web Service Explorer, веб-служба будет обрабатываться в SOAP!

Когда я тестирую веб-службу напрямую с помощью обозревателя веб-служб:

Processing by ContextserverController#concat as SOAP
*******************************************************************
************************   CONCAT   *******************************
*******************************************************************
{"concatRequest"=>{"a"=>"a", "b"=>"b"}}
a
b
ERGEBNIS: ab
*******************************************************************
  Rendered /Users/jordan/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/wash_out-0.9.2/app/views/wash_with_soap/document/response.builder (1.2ms)

Поэтому я не понимаю, почему процесс будет выполняться как HTML, когда я вызываю процесс.


person Fezi32    schedule 30.08.2015    source источник


Ответы (1)


Web Service Explorer, вероятно, отправляет заголовок «Accept», содержащий «application/soap+xml», чего не делает процесс BPEL. Вы можете проверить request.env на наличие содержимого action_dispatch.request.accepts, чтобы увидеть, какой заголовок Accept вы получаете.

person thunder    schedule 05.01.2016