2014-09-10 1 views
1

У меня есть приложение GWT RPC, развернутое в Tomcat 8, и я хочу, чтобы код сервера загружал некоторые данные конфигурации (имя хоста и порт на другую службу). В противном случае сервис работает нормально. Я прочитал несколько предложений, но я не могу заставить его работать.GWT - Загрузите элемент конфигурации из контекста.xml

Отрывок из моего Tomcat context.xml (я знаю, что context.xml требует перезапустить tomcat при изменении - это нормально).

<Context reloadable="true"> 

    <Parameter name="config_hostname" value="192.168.2.199" override="false"/> 
    <Parameter name="config_port" value="8888" override="false"/> 

В моей реализации обслуживания у меня есть метод setup(). В этом случае я пытаюсь получить доступ к конфигурации:

String hostname = getServletConfig().getInitParameter("config_hostname"); 
String port = getServletConfig().getInitParameter("config_port"); 

Однако это не работает. Может ли кто-нибудь поставить меня на правильный путь?

----------------------- обновление -------------------

Я попытался положить данные в web.xml, как этот

<web-app> 
<context-param> 
    <param-name>hostname</param-name> 
    <param-value>192.168.2.199</param-value> 
</context-param> 
</web-app> 

и использовать его, как это (как работает!):

String h1=getServletConfig().getServletContext().getInitParameter("hostname"); 
String h2=getServletContext().getInitParameter("hostname"); 

однако я не хочу, чтобы положить его в Интернете. xml, так как я хочу иметь разные настройки для каждого развертывания. У Tomcat есть conf/server.xml och conf/context.xml, и я пробовал их, но тогда я получил NULL в вышеуказанных вызовах.

Каков наилучший способ хранения серверных конфигураций? Пожалуйста, уточните в своем ответе.

Я прочитал doumentation на http://tomcat.apache.org/tomcat-8.0-doc/jndi-resources-howto.html, но я, очевидно, не понимаю.

+0

У вас есть этот код в 'ServletContextListener' или в' RemoteServiceServlet'? Метод ServletContextListener # contextInitialized' вызывается один раз при запуске сервера, где я обычно добавляю такой код. –

+0

У меня есть метод в моем классе с этим определением: «Открытый класс MyService расширяет RemoteServiceServlet». –

+0

Вы пытались поместить параметры init в файл web.xml вместо context.xml? У меня есть следующий элемент в моем файле web.xml (это дочерний элемент «веб-приложения»): ' ConfigFilename cfg/FosterAPet.cfg ' –

ответ

1

Я нашел ответ здесь, в коте документы на /docs/config/context.html

Синтаксис в context.xml должен быть (я был прав с НАЧАЛА здесь):

<Context> 
    <Parameter name="hostname" value="<some-ip-address>" override="false"/> 
</Context> 

и призыв читать это должно быть:

getServletConfig().getServletContext().getInitParameter("hostname"); 
    OR  
getServletContext().getInitParameter("hostname"); 

Я уверен, что у меня есть намного больше, чтобы узнать (например, чтобы иметь separat Params для отдельных веб-приложений в Tomcat, но это хорошо на данный момент).

Смежные вопросы