修改Servlet参数

时间:2010-02-17 23:11:38

标签: java tomcat gwt

我在Tomcat 6.0服务器上运行了一个GWT Servlet。此服务器充当另一个服务的代理。此最终服务可能在我的网络中的不同IP和/或端口中运行。

如何配置我的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值。

知道怎么做吗?

感谢。

2 个答案:

答案 0 :(得分:1)

对于真正的动态配置,您可以将配置对象公开为jmx bean,并让您的servlet使用该bean。

中间解决方案是将配置放在不同的文件中,如xml或属性,或在db表中,并在后台线程中定期读取。

答案 1 :(得分: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();
        }
    }
....
}