Попытка не изобретать колесо здесь. У меня есть страница Google Web Toolkit, которую я готовлю к развертыванию, но веб-сервис, с которым я общаюсь, будет иметь другой относительный адрес на развернутом сервере, чем мой локальный тестовый компьютер.
В связи с этим я ищу простой способ развертывания с помощью некоторого легко редактируемого файла конфигурации, в который я могу поместить основные настройки на стороне сервера. У меня есть пара идей о том, как это сделать, но они кажутся несколько странными, и мне кажется, что уже должно быть решение для такого рода проблем (в конце концов, настройки для каждого сервера ОЧЕНЬ распространены!)
Есть идеи?
Редактировать: Поскольку это, кажется, не привлекает большого внимания, позвольте мне изложить мои первоначальные мысли: сохранить статический файл локально для файлов GWT, которые я запрашиваю с помощью вызова AJAX, перед любой другой логикой , Когда файл возвращается, я анализирую свои данные и сохраняю их как глобально доступные переменные, затем позволяю запустить логику построения страницы. Кажется неуклюжим, и есть большой недостаток в ожидании возврата AJAX перед любой загрузкой, но это сработает. Есть лучшие предложения? (Пожалуйста?)
Мое решение:
Я нашел решение самостоятельно, но оно довольно специфично для моего точного сценария, поэтому я не знаю, насколько оно будет полезным для обычного пользователя. В любом случае я опубликую это здесь, если кто-то найдет это полезным.
Страница, над которой я работаю, на самом деле является элементом управления GWT, встроенным в сайт ASP.net. Воспользовавшись этим и открыв класс словаря GWT, я собрал систему «настроек», подобную этой:
Во-первых, нужный мне параметр (в данном случае адрес веб-службы) задается в файле ASP.net Web.Config
<appSettings>
<add key="serviceUrl" value="http://mySite.com/myService.asmx"/>
</appSettings>
На странице ASP, в которую встроен элемент управления GWT, я добавляю «статический» объект javascript, содержащий необходимые мне параметры конфигурации:
<head runat="server">
<title>Picklist Manager</title>
<script type="text/javascript" language="javascript">
var AppConfig = {
serviceUrl: "<%= ConfigurationManager.AppSettings["serviceUrl"] %>"
};
</script>
<script type="text/javascript" language="javascript" src="gwtcontrol.nocache.js"></script> <!-- Include my GWT control -->
</head>
Наконец, в GWT я создаю статический класс «AppConfig», который предоставляет этот параметр следующим образом:
public class AppConfig {
public static String serviceUrl = "defaultUrl";
public static void Initialize() {
Dictionary appConfig = Dictionary.getDictionary("AppConfig");
if(appConfig == null) { return; }
servicePath = appConfig.get("serviceUrl");
}
}
Оттуда я могу вызвать AppConfig.serviceUrl в любом месте моего кода, чтобы получить настройку ... Вот как! Так что да, это довольно длинный и сложный способ, но он работает для меня. Из ответов, данных Александром, кажется наиболее подходящим к тому, что я искал, так что награда достается ему, но спасибо всем, кто решил мою маленькую липкую проблему!