Существует ли способ получить список всех контекстов приложения Spring, работающих в JVM?

Вышеуказанный код является способом слишком сложным.

Помните, что круговая волна является вращательно-симметричной, то есть нет необходимости повторяться по углу; только амплитуда зависит от расстояния от источника (и, конечно, частоты / фазы; предполагается, что вы моделируете зависимость от времени, изменяя последнее).

Просто переберите все ячейки сетки и рассчитайте их расстояние до источника:

for (int i = 0; i < w; i++) {
    for (int j = 0; j < h; j++) {
        // calculate Euclidean distance to source
        double dx = i - x, dy = j - y;
        double dist = Math.sqrt(dx * dx + dy * dy);

        // no need to check bounds explicitly here
        wave[i][j] = Math.sin(f * dist + phase);
    }
}

Примечание:

  • Было бы более целесообразно переименуйте "частоту" в волновой вектор (однако это не изменит код).

  • В отличие от линейных волн, круговые волны затухают с расстоянием из-за сохранения энергии.

5
задан Ricardo Gladwell 16 February 2009 в 14:58
поделиться

4 ответа

[Редактирование: Это действительно не помогает, поскольку каждый web.xml должен был бы иметь того же слушателя]

Вы могли сделать, чтобы ServletContextAttributeListener прекратил слушать для вставок стандартного атрибута WebApplicationContext и затем уведомил некоторый централизованный монитор?

Не протестированный:

public class SpringWACListener implements ServletContextAttributeListener {
    public void attributeAdded(ServletContextAttributeEvent scab) {
        if (WebApplicationContext.
            ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE.
            equals(scab.getName()) {
            myCentralisedMonitor.notify("added");
        }
    }
    // same for others
}
2
ответ дан 14 December 2019 в 13:48
поделиться

Вы могли попробовать Комплект управления приложениями Spring

http://www.springsource.com/products/ams

не уверенный, что - включенные затраты то, хотя, не может вообразить это являющийся дешевым.

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

Раньше был, и это назвали [getServlets] (http://java.sun.com/products/servlet/2.2/javadoc/javax/servlet/ServletContext.html#getServlet (java.lang. Строка)); однако, это теперь удерживается от использования без замены, означающей, что наличие такого метода, вероятно, сделало реализацию спецификации чрезмерно обременительной. От JavaDoc спецификации:

getServlets

общественность java.util. Перечисление getServlets ()

Устаревший. С сервлета API 2.0 Java, без замены.

Этот метод был первоначально определен для возврата Перечисления всех сервлетов, известных этому контексту сервлета. В этой версии этот метод всегда возвращает пустое перечисление и остается только сохранять совместимость на уровне двоичных кодов. Этот метод будет постоянно удален в будущей версии Сервлета Java API.

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

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

Нет - к обоим вопросам.

Доступ ко всем контекстам сервлета был бы проблемой безопасности. Вы смогли бы осмотреть и/или управлять другими веб-приложениями. Единственный, зная все контексты сервлета является самим контейнером. Но это - внутренняя реализация, нет никакого API.

Доступ контекста Spring подобен, но если Вы будете иметь в виду всю пружину контексты в одном веб-приложении, то они создадут иерархию - контексты для контроллеров, например. Реализация org.springframework.context.ApplicationListener как боб в корневом пружинном контексте (как инициализировано org.springframework.web.context.ContextLoaderListener настроенный в web.xml) может уведомить, что Вы о запущенных контекстах, остановились, закрылись или обновились.

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

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