我有一个部署到Tomcat 8的GWT RPC应用程序,我希望服务器代码加载一些配置数据(主机名和端口到另一个服务)。否则服务工作正常。我已经阅读了多个建议,但我无法让它发挥作用。
我的Tomcat context.xml中的一个片段(我知道context.xml要求我在更改时重启tomcat - 没关系。)
<Context reloadable="true">
<Parameter name="config_hostname" value="192.168.2.199" override="false"/>
<Parameter name="config_port" value="8888" override="false"/>
在我的服务实现中,我有一个setup()方法。在那里我尝试通过以下方式访问配置:
String hostname = getServletConfig().getInitParameter("config_hostname");
String port = getServletConfig().getInitParameter("config_port");
然而,这不起作用。谁能让我走上正轨?
----------------------- update -------------------
我已尝试将信息放在web.xml中,就像这样
<web-app>
<context-param>
<param-name>hostname</param-name>
<param-value>192.168.2.199</param-value>
</context-param>
</web-app>
并像这样使用它(两者都有效!):
String h1=getServletConfig().getServletContext().getInitParameter("hostname");
String h2=getServletContext().getInitParameter("hostname");
但是我不想把它放在web.xml中,因为我想为每个部署设置不同的设置。 Tomcat有conf / server.xml och conf / context.xml,我已经尝试了那些但是我在上面的调用中得到了NULL。
哪种方式是存储服务器端配置的最佳方式?请在答案中详细说明。
我已经在http://tomcat.apache.org/tomcat-8.0-doc/jndi-resources-howto.html阅读了doumentation,但我显然不理解它。
答案 0 :(得分:1)
我在/docs/config/context.html
的tomcat文档中找到了答案context.xml中的语法应该是(我在这里的beginnig中是正确的):
<Context>
<Parameter name="hostname" value="<some-ip-address>" override="false"/>
</Context>
并且读取它的调用应该是:
getServletConfig().getServletContext().getInitParameter("hostname");
OR
getServletContext().getInitParameter("hostname");
我确信我还有很多东西需要学习(例如,在Tomcat中为单独的Web应用程序设置了分隔参数,但现在这很好。)