2013-05-28 28 views
1

我有一個Spring MVC應用程序,並在其中我使用與方法的類註釋爲@Scheduled春天@Scheduled工作 - 獲得基本應用程序路徑

在此方法運行週期的工作,我希望得到基本應用程序路徑即​​或http://www.mywebsite.com/根據這是我的本地系統還是生產系統。

我該怎麼做?我無權訪問HttpServletRequest,因爲這不是Controller類。

任何提示,將不勝感激

回答

4

在我看來,這是一個好主意,使用配置文件和存儲性能,如基本應用程序路徑屬性文件中 - 其中每個環境都有自己的屬性文件:config_dev.properties,config_production。屬性

一旦他們在那裏,您可以使用環境(在SpringSource blog上描述)將它們加載到類似作業的類中。

如何到Tomcat和Spring配置爲使用配置文件:Spring 3.1 profiles and Tomcat configuration

1

將一個myconfiguration.properties了您的應用程序,讓程序知道,無論是其在本地或在生產環境中運行。然後在你的方法註釋爲@Scheduled只需閱讀Property文件。

String configPath = System.getProperty("config.file.path"); 
File file = new File(configPath); 
FileInputStream fileInput = new FileInputStream(file); 
Properties properties = new Properties(); 
properties.load(fileInput); 

,並提供agrument,

-Dconfig.file.path=/path/to/myconfiguration.properties 
運行應用程序服務器(或容器)時

。這可以通過將完成,

JAVA_OPTS="$JAVA_OPTS -Dconfig.file.path=/path/to/myconfiguration.properties" 

的腳本,該腳本運行應用程序服務器,而使用的開始(大約)。

  • 對於Tomcat其catalina.sh
  • 對於JBoss AS其run.sh
  • 對於WebLogic其setDomainEnv.sh

而且這樣做,啓動服務器和部署應用程序之後。最後,你的@Scheduled方法應該知道它需要的信息。由於屬性文件不在應用程序中,因此您可以在不重建應用程序的情況下更改屬性的值,或者甚至不打擾它!

1

只是在web.xml

<context-param> 
    <param-name>webAppRootKey</param-name> 
    <param-value>my.root.path</param-value> 
</context-param> 

添加此代碼,並使用它的代碼作爲一個系統屬性