2010-02-17 103 views
0

我有一個在Tomcat 6.0服務器上運行的GWT Servlet。該服務器充當另一個服務的代理。此最終服務可能在我的網絡中的不同IP和/或端口上運行。修改Servlet參數

我如何配置我的GWT Servlet來連接到我的任何服務,而無需手動修改web.xml文件?

我初始化我的servlet有:

<!-- 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值。

任何想法如何做到這一點?

謝謝。

回答

1

對於真正的動態配置,您可以將配置對象公開爲jmx bean,並讓您的servlet使用該bean。

中間解決方案是將配置放入不同的文件,xml或屬性或db表中,並在後臺線程中定期讀取。

+0

我終於把屬性的方法,因爲我需要一個非常簡單的配置。 – 2010-02-22 09:30:32

0

出於完整性:

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(); 
     } 
    } 
.... 
}