приложение перезапуска, не перезапуская сервер?

Существует ли способ перезапустить приложение ColdFusion, не перезапуская весь сервер?

Существует два приложения ColdFusion, работающие на сервере, и я только хочу перезапустить одного из них.

23
задан James Cushing 16 September 2015 в 14:40
поделиться

6 ответов

Если вы используете Application.cfc, вы можете обновить его, чтобы можно было принудительно вызвать onApplicationStart (), если в URL-адресе передается что-то конкретное, или что-то подобное. Просто поместите проверку этого магического токена в onRequestStart () и вызовите onApplicationStart (), если это так.

Если нет, вы можете попробовать предложение @ Marcos. Я не уверен, какие последствия это может иметь в вашем приложении. Я бы предложил переименовать ваше приложение, чтобы оно запускалось как новое приложение.

22
ответ дан 29 November 2019 в 01:20
поделиться

Если вы на CF9, запустите ApplicationStop() https://cfdocs.org/applicationstop

20
ответ дан 29 November 2019 в 01:20
поделиться
<cfset structClear(application) /> 
3
ответ дан 29 November 2019 в 01:20
поделиться

Обычно я помещаю ссылку на сессию каждого пользователя в struct в области видимости Application, чтобы отслеживать, что происходит в приложении. Возможно, здесь поможет что-то подобное в области видимости Server. Попробуйте:

Тогда у вас будет ссылка на реальный объект Application вне области видимости этого приложения. Вы можете попробовать всевозможные разрушительные вещи, чтобы избавиться от нее. Попробуйте это на свой страх и риск!!! И делайте это на сервере разработчиков, прежде чем делать это на своем рабочем сервере. ;)

.
0
ответ дан 29 November 2019 в 01:20
поделиться

Use cfinvoke.

<cfinvoke method="onApplicationEnd" component="Application">
    <cfinvokeargument name="ApplicationScope" value="#application#" />
</cfinvoke>
0
ответ дан 29 November 2019 в 01:20
поделиться

Вот, моя версия CF7 / 8 приложения ApplicationStop для CF9. Я считаю, что это потокобезопасно, отмечая комментарий Шона.

<cffunction name="ApplicationStop" returntype="boolean" output="false">
 <cfif IsDefined('application')>
   <cftry>
     <!--- This is just in case there's no app scope but variables.application --->
     <cfset CreateObject('java', 'coldfusion.runtime.ApplicationScopeTracker').cleanUp(application) />
     <cfreturn true />
     <cfcatch type="any"></cfcatch>
   </cftry>
 </cfif>
 <cfreturn false />
</cffunction>

Как упоминал Генри, это моя запись в блоге на эту тему: http://misterdai.wordpress.com/2010/06/14/cf-flag-application-to-run-onapplicationstart-part-2/

4
ответ дан 29 November 2019 в 01:20
поделиться
Другие вопросы по тегам:

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