Ошибка при переименовании приложения при попытке поделиться сессией между приложениями ColdFusion / ColdBox - PullRequest
0 голосов
/ 08 мая 2018

Я хочу поделиться данными сеанса между некоторыми приложениями, которые находятся на разных поддоменах (один и тот же сервер). В прошлом я следил за тем, чтобы каждое приложение имело одинаковое имя в соответствующем файле application.cfc. Некоторое время все работало нормально - люди заходят в одно приложение; сеанс делится с остальными.

Теперь мы хотим преобразовать одно из этих приложений в ColdBox. Поэтому я установил ColdBox 4 на ACF 2016 на своей машине разработчика. Изменение имени приложения Coldbox по умолчанию с

this.name = hash( getCurrentTemplatePath() ); 

до

this.name = 'mysite;'

отлично работает на машине разработки, никаких проблем. Но как только я загружаю тот же код в производство (также ACF 2016), я получаю следующую ошибку:

Element CBBOOTSTRAP is undefined in a Java object of type class [Ljava.lang.String;. 

The error occurred in application.cfc: line 50

48 :    public boolean function onRequestStart( string targetPage ){
49 :        // Process ColdBox Request
50 :        application.cbBootstrap.onRequestStart( arguments.targetPage );
51 : 
52 :        return true;

Как только я изменю имя приложения обратно на

this.name = hash( getCurrentTemplatePath() ); 

приложение работает без ошибок (но сеанс не передается). Я думаю, что сообщение о строке 50 может быть красная сельдь. Я пробовал все виды модификаций там, но ничто не изменяет исходное сообщение об ошибке, за исключением изменения имени приложения обратно к тому, что было.

Я снял флажок кэширования компонентов в администраторе CF и перезапустил (несколько раз) безрезультатно. Я не знаю достаточно о ColdBox, чтобы рискнуть предположить, что может происходить, но я в полном замешательстве. Я не знаю, почему он будет работать на ACF 2016 на одной машине, а не на другой. Если у кого-то есть какие-либо подсказки, я был бы очень признателен! Большое спасибо!

1 Ответ

0 голосов
/ 08 мая 2018

Element CBBOOTSTRAP is undefined.

Причина, по которой вы не видите этой проблемы в своем локальном устройстве разработки, заключается в том, что вы всегда сначала запускаете свое CB-приложение, поэтому определяете CBBOOTSTRAP в области приложения, прежде чем запускать приложение не-CB. В другой среде приложение без CB запускается первым, и поэтому это значение еще не определено.

Хватит, сделай это

Я прошел через эту же проблему несколько лет назад, пытаясь заставить приложение CB и не-CB хорошо играть вместе. IIRC, нам нужно было создать включение общих переменных приложения между ними и включить CFM в оба приложения, чтобы нам пришлось редактировать только один файл при обновлении любого из этого набора переменных.

Попытка поделиться сессией может сработать, если вы воспользуетесь этим подходом. Если нет, мы также в конечном итоге создали SSO-логин между нашими приложениями CB и не-CB, чтобы мы могли войти между ними.

...