Я сделал его похожим на @humpah, но без злого кода JS.
form_iframe = all('iframe.wysihtml5-sandbox').last
within_frame form_iframe do
page.find('body').set('SomeContent')
end
вы можете попробовать что-то вроде этого:
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() { /*
my shutdown code here
*/ }
});
редактировать:
ловушка выключения не выполняет завершение работы приложения. вместо этого он дает разработчику возможность выполнить любую очистку, которую он / она пожелает, при завершении работы.
из JavaDoc для Runtime (хорошее прочтение, если вы планируете использовать этот метод):
Ловушка завершения - это просто инициализированный, но не запущенный поток. Когда виртуальная машина начинает свою последовательность выключения, она запускает все зарегистрированные перехватчики выключения в некотором неопределенном порядке и позволяет им работать одновременно. Когда все перехватчики завершены, он запустит все неактивированные финализаторы, если финализация при выходе была включена. Наконец, виртуальная машина остановится. ...
вы можете попробовать использовать Runtime.getRuntime (). AddShutdownHook ()
, который должен удовлетворить ваши требования. Таким образом вы можете зарегистрировать ловушку для очистки, чтобы выполнить плавное завершение работы.
ИЗМЕНИТЬ
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html#addShutdownHook (java.lang.Thread) public void addShutdownHook (Перехватчик потока) Регистрирует новую ловушку завершения работы виртуальной машины. Виртуальная машина Java выключается в ответ на два типа событий:
Преимущество второго варианта - проверка файла - перед первым - прослушивание порта - в том, что у вас есть некоторая возможность обеспечения безопасности.
Вы можете установить разрешения для каталог, в котором создается файл, чтобы только соответствующие пользователи могли закрыть программу. Если вы слушаете порт, любой пользователь может подключиться к нему.
Первые два варианта реализовать просто. Вы также можете использовать некоторые вещи JMX (я мало что знаю об этом). Tomcat использует первый подход, и я применил 1 и 2 в двух своих проектах.
Если вы хотите использовать версию для сокета, это очень просто реализовать. Вот код:
ServerSocket server = new ServerSocket(8080);
System.out.println("Socket listening!");
server.accept();
System.out.println("Connection received!");
Вы можете легко встроить этот код в отдельный поток, который вы запускаете с вашей программой,
Я бы посоветовал использовать ловушку выключения. Это позволит управлять вашей программой с помощью стандартных инструментов ОС. Также не требуется никакого дополнительного доступа к внешним ресурсам (диску, портам и т. Д.).
Рассмотрите возможность использования компонента JMX. Затем вы можете подключиться к JConsole локально или по сети и взаимодействовать со своим компонентом. После этого компонент сможет правильно завершить работу программы.
С Java 6 u 10 или новее вы можете сделать то же самое с JVisualVM.