onApplicationEnd - CF на самом деле закрывается?

Мне удалось заставить это работать со следующим кодом. Я создал CustomTabViewController, а затем изменил идентификатор класса контроллера панели вкладок в Интерфейсном Разработчике, чтобы использовать этот пользовательский класс. Вот код, который он использует (содержимое файла .h и .m). Ключ устанавливает для свойства значение nil, в результате чего кнопка «Редактировать» не отображается. Подробности см. В http://developer.apple.com/library/ios/documentation/uikit/reference/UITabBarController_Class/Reference/Reference.html#//apple_ref/occ/instp/UITabBarController/customizableViewControllers Если массив пуст или значение этого свойства равно nil, панель вкладок не позволяет переставлять какие-либо элементы. "

#import 

@interface CustomTabBarController : UITabBarController {

}
@end

#import "CustomTabBarController.h"


@implementation CustomTabBarController

- (void)viewDidLoad
{
    self.customizableViewControllers = nil;
    [super viewDidLoad];
}   

@end

5
задан Ciaran Archer 23 October 2009 в 08:32
поделиться

3 ответа

It sounds like this may be caused by the fact that the server is shutting down, rather than just the CF application. I am guessing that if the JVM is already in the process of shutting down, the resources your java class uses might not be available at that point. So onApplicationEnd might not be the correct place for that code.

You might want to look into adding a ShutdownHook. I am not 100% positive, but I think placing the cleanup code there, instead of in onApplicationEnd might allow the java object to do its cleanup before the JVM enters its death throes stage.

But having said all that, would not the "connection to another device on the network" be closed automatically once the server shuts down?

3
ответ дан 14 December 2019 в 13:40
поделиться

according to the docs "You cannot use this method to display data on a user page, because it is not associated with a request."

I think the "is not associated with a request." is the key. It could be that your java objects only exist within the request thread and not in the app instance.

Perhaps instead you shound try using onRequestEnd

http://livedocs.adobe.com/coldfusion/8/AppEvents_09.html

2
ответ дан 14 December 2019 в 13:40
поделиться

Ну, моя первая мысль заключается в том, что сервер на самом деле не останавливается, когда приложение останавливается ... Приложение остановится, но сервер может продолжать работать . Если у вас есть каталог с более старым Application.cfm и только несколько плоских файлов .cfm в этом каталоге, люди могут запрашивать эти cf-страницы, и они не могут быть связаны с каким-либо контекстом приложения. Таким образом, вы можете фактически не иметь запущенных приложений и по-прежнему обслуживать множество CF-страниц. Конечно, люди обычно не так настраивают свои CF-серверы, но так они и работают. Были некоторые разговоры о создании Server.cfc, например Application. cfc в будущей версии, хотя я не знаю, реализовали ли они это в CF9.

Моя вторая мысль заключается в том, что единственный способ для метода onApplicatinEnd вызвать конкретную ошибку «java.lang.IllegalStateException: Shutdown in progress» - это если java-объекты, на которые вы ссылаетесь, являются объектами java, которые каким-то образом внутренне связаны с контекст приложения, например объекты, к которым можно получить доступ через недокументированный ColdFusion.server.ServiceFactory. Но опубликованный вами код не выглядит так, как будто это происходит.

Это маловероятно, но вы можете попробовать поместить объект testCrypto в локальную / временную переменную в методе onApplicationEnd и запустить его оттуда.

Извините, я не мог больше помочь.

Я реализовал это в CF9.

Моя вторая мысль заключается в том, что единственный способ для метода onApplicatinEnd вызвать конкретную ошибку «java.lang.IllegalStateException: Shutdown in progress» - это если java-объекты, на которые вы ссылаетесь, являются объектами java, которые каким-то образом внутренне связаны с контекст приложения, например объекты, к которым можно получить доступ через недокументированный ColdFusion.server.ServiceFactory. Но опубликованный вами код не выглядит так, как будто это происходит.

Это маловероятно, но вы можете попробовать поместить объект testCrypto в локальную / временную переменную в методе onApplicationEnd и запустить его оттуда.

Извини, я не мог больше помочь.

Я реализовал это в CF9.

Моя вторая мысль заключается в том, что единственный способ для метода onApplicatinEnd вызвать конкретную ошибку "java.lang.IllegalStateException: Shutdown in progress" - это если java-объекты, на которые вы ссылаетесь, являются объектами java, которые каким-то образом внутренне связаны с контекст приложения, например объекты, к которым можно получить доступ через недокументированный ColdFusion.server.ServiceFactory. Но опубликованный вами код не выглядит так, как будто это происходит.

Это маловероятно, но вы можете попробовать поместить объект testCrypto в локальную / временную переменную в методе onApplicationEnd и запустить его оттуда.

Извините, я не мог больше помочь.

Но опубликованный вами код не выглядит так, как будто это происходит.

Это маловероятно, но вы можете попробовать поместить объект testCrypto в локальную / временную переменную в методе onApplicationEnd и запустить его оттуда.

Извини, я не мог больше помочь.

Но опубликованный вами код не выглядит так, как будто это происходит.

Это маловероятно, но вы можете попробовать поместить объект testCrypto в локальную / временную переменную в методе onApplicationEnd и запустить его оттуда.

Извини, я не мог больше помочь.

1
ответ дан 14 December 2019 в 13:40
поделиться
Другие вопросы по тегам:

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