Прервите веб-приложение Java на запуске

Вы можете использовать grepl:

x <- "aa_bb_cc"
grepl("_.*_", x)

[1] TRUE

Шаблон регулярного выражения _.*_ соответствует любым двум подчеркиваниям во входной строке.

Теперь удаленный ответ @akrun дал возможность проверить весь вектор строк одновременно, используя stringr. Мы все еще можем сделать это, используя grepl, но мы должны использовать функцию apply:

v1 <- c("aa_bbcc", "aa_bb_cc", "aabbcc")
sapply(v1, function(x) grepl("_.*_", x))

aa_bbcc aa_bb_cc   aabbcc 
  FALSE     TRUE    FALSE
5
задан ottodidakt 7 November 2008 в 14:21
поделиться

2 ответа

Я рекомендовал бы бросить a RuntimeException от ServletContextListener.contextInitialized.

Сервлет 2.3 не был очень ясен на этом, но Сервлет 2.4 добавил следующую деталь:

Некоторые исключения не происходят под стеком вызовов другого компонента в приложении. Примером этого является … ServletContextListener, который бросает необработанное исключение во время уведомления об инициализации контекста сервлета …. В этом случае Разработчик не имеет возможности обрабатывать исключение. Контейнер может ответить на все последующие запросы к веб-приложению с кодом состояния HTTP 500 для указания на ошибку приложения.

Так как это говорит, что механизм сервлета "может" отключить доступ к приложению, Вы могли бы найти сервер, который делает что-то еще. Однако Tomcat и WebLogic и отключают приложение, и единственная другая разумная вещь, о которой я могу думать, состояла бы в том, чтобы проигнорировать исключение. Я не вижу контейнер, который сделал тот являющийся очень популярным — таким образом, необходимо протестировать его в WebSphere сами.

7
ответ дан 14 December 2019 в 09:04
поделиться

Бросок RuntimeException, вероятно, сделает только тот сервлет недоступным. Более безопасный путь мог бы состоять в том, чтобы реализовать что-то как перехватчик Spring, который передаст ошибочной странице или чему-то, если проверки не удались. Тем путем Вы не должны препятствовать тому, чтобы приложение загрузилось, но можете обработать его более корректно во время выполнения.

0
ответ дан 14 December 2019 в 09:04
поделиться
Другие вопросы по тегам:

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