代码之家  ›  专栏  ›  技术社区  ›  Carlos Tasada

修改Servlet参数

  •  0
  • Carlos Tasada  · 技术社区  · 16 年前

    如何在不手动修改web.xml文件的情况下配置GWT Servlet以连接到任何服务?

    我正在用以下命令初始化我的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"));
    }
    

    我的理想情况是这个配置是默认的,但是应用一些配置文件(properpies文件、xml、ini、cfg,…….)我可以覆盖默认的web.xml值。

    知道怎么做吗?

    谢谢。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Yoni    16 年前

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

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

        2
  •  0
  •   Carlos Tasada    16 年前

    完整性:

    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();
            }
        }
    ....
    }
    
    推荐文章