Пытаясь переместить веб-приложение axis2 из glassfish3 в tomcat6, я не могу найти способ получить параметр конфигурации из статического контекста.
В glassfish3 системное свойство было определено в далеком месте и считано из приложения с помощью System.getProperty(String name)
.Интернет не только согласен с тем, что это не тот путь, которым следует пользоваться веб-приложением, но этот трюк просто невозможен для tomcat (tomcat docs) .
Чтение параметров из ServletContext
также неосуществимо, так как приложение использует axis2, и я не могу найти способ получить доступ к какому-либо сервлету вуду из статического контекста, который инициализирует конфигурацию приложения.
services.xml
(файл, содержащий описание службы для axis2) может содержать <parameter>
узлов, так что это кажется хорошим местом для настройки расположения конфигурации, но я не могу найти способ прочитатьэти параметры из приложения.
Короче говоря: есть идеи, как получить значение, сконфигурированное вне кода приложения, доступного из статического контекста?
(ответ, указанный здесь как StackOverflow, не позволяет мне ответитьмой собственный вопрос ...)
После еще одного поиска в Интернете было найдено решение с использованием реализации org.apache.axis2.engine.ServiceLifeCycle
, которая могла бы считывать параметр в startUp
-методе как таковой:
Parameter param = service.getParameter("name");
if (param != null) {
saveParamValue(param.getValue().toString());
} else {
// log warning on falling back to System.getProperty()
}
Класс жизненного цикла присоединяется с помощью class="fully.qualified.ClassName"
к узлу <service>
файла services.xml
, используемого axis2.
Это работает, теперь приложение просто падает на что-то другое (но это не имеет ничего общего с этой проблемой).