Внедрение собственного обработчика die () в обработчик SOAP mod_perl - PullRequest
0 голосов
/ 17 марта 2011

Мы используем $server = SOAP::Transport::HTTP::Apache->new; $server->dispatch_with(...) здесь как бэкэнд для приложения на основе JS. Если базовый модуль умирает, он отправляет обратно хорошее сообщение об ошибке, которое отображается кодом JS.

Проблема в том, что я хотел бы получить более подробные сообщения (например, Carp :: longmess) и их печатную копию на STDERR.

Как я могу добавить собственный обработчик исключений в SOAP :: Transport :: HTTP :: Apache с минимальными изменениями кода?

(Это большой и старый проект, который мы не можем переписать , хотя, честно говоря, он заслуживает переписывания).

ОБНОВЛЕНИЕ: вот пример сообщения об ошибке:

<soap:Body><soap:Fault>
<faultcode>soap:Server</faultcode><faultstring>Column 
'allocation' cannot be null at 
/usr/local/lib/perl5/site_perl/5.8.8/Tangram/Storage.pm
 line 686. </faultstring></soap:Fault></soap:Body>

Я получаю ошибку Tangram, но это вряд ли ошибка в Tangram, и в любом случае мне нужна полная трассировка стека. OTOH, сообщение die попало в сообщение SOAP, которое не является обычным действием die, поэтому есть обработчик где-то - который я хочу немного настроить.

1 Ответ

0 голосов
/ 17 марта 2011

Обработчик ошибок находится в SOAP::Transport::HTTP::Server::_output_soap_fault.Попробуйте grep на <faultcode> в путях perl INC.

...