2013-08-02 11 views
2

Возможно ли получить URL-адрес приложения весной запланированной работы (@Scheduled аннотируется)? Я хочу создать задание, которое отправляет электронное письмо с URL-адресом на конкретную страницу приложения, скажем, на http://localhost:8080/appName/some/specific/url. Проблема в том, что часть http://localhost:8080/ будет различной в каждой среде (локальная, dev, production и т. Д.).URL-адрес весеннего приложения в запланированном задании

Есть ли простой способ получить базовый URL-адрес в серверном методе, который выполняется весенним планировщиком?

ответ

2

Я делаю это с файлом свойств. This tutorial рассказывает вам, как вы можете это сделать.

Единственная сложная часть - вам нужен способ изменить значение, которое файл свойств ссылается для каждой из ваших различных сред.

0

Нет прямого способа получить базовый URL-адрес в вашем планировщике. Вы можете посмотреть на работы обходные для этого, как

  1. Используйте файл свойств для хранения URL для каждой среды

  2. Have боб Configurartion, который реализует ServletContextAware. Этот компонент будет автоматически уведомлен при инициализации веб-контекста.

    общественного класса AppConfig реализует ServletContextAware {

    private String baseUrl; 
    
        public String getBaseUrl(){ 
          return baseUrl; 
        } 
    
        public void setServletContext(ServletContext servletContext){ 
         this.baseUrl=servletContext.getRealPath("/"); 
        } 
    } 
    
+0

Это один возвращается мне реальный путь на диске, как/данных/дом/рабочее пространство/кот/WebApps/..... так что я думаю, что это это не то, что я ищу – wojtek