Ограничить Java-апплет только одним экземпляром

Некоторое время я использовал Stackru, чтобы найти решения для моих вопросов программирования, но для текущего вопроса я не нашел полезного решения. Итак, я присоединился.

Что было бы хорошим решением, чтобы ограничить Java-апплет только одним экземпляром. Я использую php для предоставления апплета конечному пользователю, так что это будет вариант.

Но мне гораздо больше интересно, могу ли я ограничить выполнение Java-апплета через сам апплет. Я довольно новичок в Java, поэтому я не знаю, с чего начать искать такую ​​конструкцию.

Мы ценим любые предложения.

Как примечание: " JavaScript для запуска только ОДНОГО окна для Java-апплета с заданным URL" будет решением. Хотя я встраиваю апплет в приложение, которое я создаю, я не очень хочу всплывающее окно, обслуживающее апплет.

С уважением, AltWouss

Редактировать:
Для уточнения лимита экземпляра. Я хотел бы иметь только один апплет загружен на машину.

4 ответа

Решение

Почему бы вам не запустить SocketServer на хорошо известном порте для вашего апплета?

Если открыть этот SocketServer, это может быть связано с тем, что другой уже запущен. Затем вы можете отобразить сообщение, сообщающее об этом.

Если вы используете Java WebStart, то есть JNLP SingleInstanceService,

К сожалению, Java не поддерживает именованные мьютексы для блокировки между процессами. Однако вы можете реализовать простую блокировку, просто создав файл в известном месте с известным именем при запуске апплета. Если файл не может быть создан, то вы знаете, что он уже существует, потому что приложение уже запускалось один раз. Чтобы гарантировать удаление файла при закрытии приложения, просто вызовите метод File.deleteOnExit().

Что-то вроде:

if(file.createNewFile()) {
    file.deleteOnExit();
} else {
    throw new Exception("Instance already running!");
}

Не идеальное решение и, конечно, есть некоторые проблемы... Но, вероятно, этого достаточно для того, что вы пытаетесь сделать. Также можно посмотреть на тот класс FileLock, который может предложить более надежное и подходящее решение.

Я не совсем уверен, поможет ли это или нет.. но первое, что приходит мне в голову, это... возможно ли сделать апплет одиночным? извините, это скорее как дополнительный вопрос, чем ответ...

Другие вопросы по тегам