У нас есть невероятно расстраивающая ситуация с основанным на веб-сервисах 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 часов.
Среда:
Возможно, обновление одной из этих почтенных частей программного обеспечения помогло бы? Возможно, обновляя просто ОСЬ?
Поддержка 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
Я прочитал эту тему и тему 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, то я понимаю, как может возникнуть эта проблема. Проверьте физические пути на наличие отображений и попробуйте решение здесь, чтобы использовать только отображение "/".
Невозможно назначить массив другому массиву в 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 и спросить его "зачем вам генерировать и искать класс с" тафканом "в качестве пакета?