Серьезные, случайные ошибки с веб-сервисом CF

У нас есть невероятно расстраивающая ситуация с основанным на веб-сервисах API CF, что мы записали, и поддержать. Мы имели в распоряжении API в течение многих лет, который был стабильным и рабочим счастливо с Ruby, PHP и клиентами ColdFusion. Затем в этом году клиент.NET приехал, и мы нашли, что наш веб-сервис не был совместим со статически типизированными языками из-за нашего широкого применения структур.

Мы в конечном счете поняли, что должны были переписать API без структур, и мы сделали так. Это теперь использует значения счетчика, массивы и CFCs (который переводится в SOAP complexTypes). Клиент.NET счастлив, и мы записали клиентам подтверждения концепции приблизительно на 6 различных языках, чтобы гарантировать, что мы будем совместимы на этот раз.

К нашей большой тревоге кажется, что наши серверы ColdFusion 7 не могут служить новому API надежно. Это работает приблизительно в течение дня или поэтому после перезапуска, затем клиенты начинают получать ошибки как:

Ошибка: coldfusion.xml.rpc. CFCInvocationException [java.lang. ClassNotFoundException: tafkan.remote_api.pfapi.v.trunk.rsp_pf_survey_status_array]

и

java.lang. NoClassDefFoundError: tafkan/remote_api/pfapi/v/trunk/pf_unit

Перезапуск экземпляров CF является единственным способом заставить проблему уйти. Много времени и денег было помещено в восстановление API, таким образом, все действительно в конце остроумия об этом.

Мы заметили, что каталоги WEB-INF/cfc-skeletons наших экземпляров CF в конечном счете, кажется, имеют две копии классов для каждого из CFCs, используемых API. Например:

-rw-r--r--  Feb 17 09:15 remote_api.pfapi.v.trunk.pf_datum.class
-rw-r--r--  Feb  3 12:20 tafkan.remote_api.pfapi.v.trunk.pf_datum.class

Кажется, что ошибки прибывают из пространства имен или проблемы пути поиска класса, таким образом, мы пытались переключить все ссылки CFC, которые будут полностью определены (запись через точку, запускающаяся с отображения) вместо просто простых ссылок на CFCs в текущем каталоге. Это казалось обещанием, но проблема возвратилась в течение 24 часов.

Среда:

  • ColdFusion 7,0,2,142559 с hf702-70523, кластером с 2 экземплярами
  • Java Sun 1.4.2_13
  • Apache 2.0.52
  • 32-разрядный Centos 4.5

Возможно, обновление одной из этих почтенных частей программного обеспечения помогло бы? Возможно, обновляя просто ОСЬ?

Поддержка Adobe, кажется, не опция, поскольку CF7 является EOL'ed и в расширено расширенной поддержке (и что только в течение еще нескольких дней).

Обновление:

Благодаря всем, кто присоединился к этому обсуждению! Вот обновление на том, где вещи стоят в данный момент.

Сервис просто гадил впервые сегодня. Один из кластерных экземпляров все еще смог генерировать WSDL, в то время как другой сказанный экземпляр:

AXIS error
Sorry, something seems to have gone wrong... here are the details:
Exception - java.lang.NoClassDefFoundError: tafkan/remote_api/pfapi/v/trunk/rsp_pf_numeric_array

И каталоги cfc-skeletons содержат файл, названный tafkan.remote_api.pfapi.v.trunk.rsp_pf_numeric_array.class, и, казалось, не содержали otherly-именованные файлы, которые мы иногда видели (remote_api.pfapi.v.trunk.rsp_pf_numeric_array.class). Файлы в cfc-skeletons, кажется, не были изменены, так как серверы были вчера запущены.

Время работы на обоих экземплярах составляло приблизительно 21,5 часа. Я работал без JIT (-Xint).

Я теперь перезапустил оба экземпляра. Они теперь работают на Java Sun 1.4.2_19 (вместо _13), и JIT был повторно включен, поскольку он ясно не вызывал эту ошибку и был вещами, были существенно медленнее без него. Я также очистился, "сохраняют флажки" файлов класса.

И теперь, мы ожидаем снова...

Обновите 2, проблема сохраняется. Я не уверен, что еще попробовать в этой точке. Аргумент!

К вашему сведению это перекрестно разослано по http://www.houseoffusion.com/groups/cf-talk/thread.cfm/threadid:60922

12
задан Cœur 5 March 2017 в 14:40
поделиться

2 ответа

Я прочитал эту тему и тему CFTalk. Мои первоначальные мысли об обходных путях, похоже, уже были предложены Марком Крюгером и Дейвом Уоттсом. Единственной другой идеей обходного пути, которая у меня была, было поймать ошибку и обновить заглушку веб-сервиса с помощью методов фабрики сервисов. (В CF8-9 для этого есть метод Admin API, не уверен насчет CF7).

Исследуя ошибку, я сузил круг возможных совпадений до следующих:

http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:144821. Это было совпадение, но не решено

http://blog.coldfusionpowered.com/?p=28 Это была очень похожая ошибка, решенная путем "устранения проблем с кейсами" во всех CFC и вызовах.

Ошибка бизнес-компонента ColdFusion Google Adwords Решена путем переписывания кода и удаления cfcomments (я подозреваю, что в данном случае за решение проблемы отвечали другие факторы)

http://forums.crystaltech.com/index.php?topic=22364.0 Теперь мы подошли ближе. Решение связано с ошибочным наличием двух корней документа

http://qaix.com/coldfusion/313-410-web-service-on-cfmx-6-1-jrun-suddenly-not-working-read.shtml Точное совпадение для сообщения об ошибке. Точное совпадение для отображения CFC на корень документа. Решением было иметь только одно отображение, указывающее на docroot, просто "/". Это может быть решением. В MX 6/6.1 и, возможно, 7, было стандартное отображение для "/", указывающее на docroot. Если у вас есть другое отображение, указывающее на docroot, то я понимаю, как может возникнуть эта проблема. Проверьте физические пути на наличие отображений и попробуйте решение здесь, чтобы использовать только отображение "/".

3
ответ дан 2 December 2019 в 23:51
поделиться

Невозможно назначить массив другому массиву в C++. Рассмотрите возможность использования вектора STL: http://www.cplusplus.com/reference/stl/vector/

-121--3460680-

Для этого существует RFC: RFC 7322 - RFC Style Guide .

-121--2189311-

Как внешние клиенты взаимодействуют с вашей веб-службой? Только через WSDL я предполагаю?

Возможно ли, что какое-то клиентское приложение, единичный тест... что-то, что-нибудь... имеет неправильный URL... Есть URL-адрес файла WSDL с «tafkan» в нем?

Если бы я работал над этим, возможно, первый путь, который я бы посмотрел вниз, был бы выяснением того, что может привести к этой проблеме. Является ли «tafkan» допустимым каталогом в вашей системе? Где на самом деле находятся файлы .cfc в файловой системе, что, если в CF Admin есть сопоставления с этими путями, и какие URL-адреса используются людьми для доступа к вашей веб-службе?

Ключ здесь, я полагаю, это попасть в голову CF и спросить его "зачем вам генерировать и искать класс с" тафканом "в качестве пакета?

0
ответ дан 2 December 2019 в 23:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: