Изменить параметры сервлета - PullRequest
0 голосов
/ 18 февраля 2010

У меня сервлет GWT, запущенный на сервере Tomcat 6.0. Этот сервер действует как прокси для другого сервиса. Эта последняя служба может работать на разных IP-адресах и / или портах в моей сети.

Как настроить сервлет GWT для подключения к любой из моих служб без изменения файла web.xml вручную?

Я инициализирую свой сервлет с помощью:

  <!-- Servlets -->
  <servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.proxy.MyServletServiceImpl</servlet-class>
    <init-param>
        <param-name>serverAddress</param-name>
        <param-value>192.168.1.10</param-value>
    </init-param>
    <init-param>
        <param-name>serverPort</param-name>
        <param-value>55005</param-value>
    </init-param>
  </servlet>

Внутри моего файла MyServletSerciveImpl.java, который я делаю

private void loadConfig() {
    ServletConfig config = this.getServletConfig();
    serverAddress = config.getInitParameter("serverAddress");
    serverPort = Integer.valueOf(config.getInitParameter("serverPort"));
}

Мой идеальный случай - это то, что эта конфигурация является настройкой по умолчанию, но применяя некоторый файл конфигурации (файл правильных файлов, xml, ini, cfg, .....), я могу перезаписать значения web.xml по умолчанию.

Есть идеи, как это сделать?

Спасибо.

Ответы [ 2 ]

1 голос
/ 18 февраля 2010

Для истинной динамической конфигурации вы можете представить объект конфигурации как bean-компонент jmx, и ваш сервлет будет использовать этот bean-компонент.

Промежуточное решение состоит в том, чтобы поместить конфигурацию в другой файл, как XML или свойства, или в таблицу базы данных, и периодически читать из нее в фоновом потоке.

0 голосов
/ 22 февраля 2010

Для полноты:

public class MyServiceImpl extends RemoteServiceServlet implements
        MyService {

    private void loadConfig() {     
        InputStream inStream = this.getServletContext().getResourceAsStream("/WEB-INF/config.properties");
        Properties properties = new Properties();
        try {
            properties.load(inStream);
            // properties.getProperty("myValue");

        } catch (IOException e) {
            Log.error(e.getMessage());
            e.printStackTrace();
        }
    }
....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...