2017-01-20 7 views
1

У нас есть проект GWT, написанный в java. У нас есть URL выхода, специфичный для среды (https://example-dev.net/logoff.htm, https://example-sit.net/logoff.htm, ...). Это прекрасно работает, когда мы добавляем этот объект из файла свойств, которые упаковывают в нашей папке проекта/Src, как в следующем:Использование файла свойств с сервера IBM WAS в проекте GWT

com.example.shared.constants/LogoutUrl.java

import com.google.gwt.i18n.client.Constants; 

public interface LogoutUrl extends Constants { 
    String LOGOUT_URL(); 
} 

com.example .shared.constants/LogoutUrl.properties

LOGOUT_URL = https://example-env.net/logoff.htm 

Это не выглядит как хорошая практика, так как это требует изменения URL и новое создание войны в каждом сервере. Я попытался добавить этот файл свойств на сервер (IBM WAS) и извлечь его из кода с помощью java.util.Properties. Но в этом случае сборка GWT не работает. Мы используем ant build. Пожалуйста, предложите способ отделить этот файл свойств от нашего проекта и получить с сервера.

Update: Добавление части, как я пытался настроить с помощью внешнего файла свойств, которые мы добавили в приложение сервера:

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("logouturl.properties"); 
          Properties prop = new Properties(); 
          try { 
           prop.load(inputStream); 
          } catch (Exception e) { 
           //LOGGER.error("Exception occurred while loading logouturl.properties file.", e); 
          } 
          String logoutUrl = prop.get("LOGOUT_URL").toString(); 
          Window.Location.replace(logoutUrl); 

Но gwtc сборки неисправного в этом случае.

ответ

1

Вы используете поддержку интернационализации GWT i18. Механизм констант для того, что он звучит, не должен рассматриваться как константа в вашем приложении, а вместо этого настраиваемое значение, которое может различаться для каждого сервера/среды. Это кажется несовместимым. Механизм констант i18 для «констант», который может отличаться в зависимости от локали. Похоже, что вы ищете, это способ предоставить настраиваемые значения для вашего URL выхода, который имеет мало общего с i18 или «константы».

Вы можете динамически настраивать URL-адрес выхода из системы, используя переменную JNDI для вашего сервера приложений, или ссылаясь на внешний файл .properties (который не обязательно должен привязываться к классу констант i18).

+0

Я настроил с помощью внешнего файла свойств, который мы добавили на сервер приложений. Я обновил свой вопрос, как я добавил этот файл свойств в свой код. Но gwtc build не работает. – devlperMoose

+0

Если код Java, который вы вставили, является частью вашего модуля GWT, он должен потерпеть неудачу. Обратите внимание, что Java-код GWT - это просто java-код, который компилируется в javascript. Не весь код Java может быть скомпилирован в javascript, и GWT объясняет в документации, что есть только подмножество библиотек Java Oracle, которые могут использоваться в GWT, так что он компилируется в Javascript (пакеты, такие как java.util. *, Java.lang .*, и т.д). Я не думаю, что InputStream является частью этого подмножества - [Совместимость с языком Java и библиотеками] (http://www.gwtproject.org/doc/latest/DevGuideCodingBasics.html) – Lev

+0

Вы отправляете какие-либо данные с сервера на ваш клиентский код GWT уже? Используете ли вы механизм RPC GWT для этого? Если да, можете ли вы использовать этот механизм для отправки настроенного значения URL выхода при необходимости? Мы делаем что-то подобное в проекте, над которым я работаю. У нас есть конфигурация на сервере, которая зависит от среды. Часть этой конфигурации отправляется в модуль GWT на стороне клиента, когда пользователь входит в наше приложение. – Lev