在Tomcat 7中,我可以定义特定类型的环境参数/变量,例如在此上下文文件中:
<Context>
<Environment name="test" value="Hello Tomcat!" type="java.lang.String"
override="false" />
</Context>
在Java中我可以这样得到它:
(String) new InitialContext().lookup("java:comp/env/test"); //"Hello Tomcat!"
如何定义包含字符串作为值的数组,以便我可以从上下文文件中读取它?我想在我的Java程序中得到类似的东西:
(String[]) new InitialContext().lookup("java:comp/env/my_array");
//{"Hello ", "Tomcat", "!"}
这是否可以在Tomcat 7中使用?
答案 0 :(得分:3)
您无法使用数组。 Tomcat 7 documentation说:
此环境条目的Web应用程序所需的完全限定Java类名称。必须是Web应用程序部署描述符中的合法值。
这JavaEE 7 tutorial about environmental entries说:
环境条目的数据类型。以下数据类型在Java EE 6中有效:
java.lang.Boolean java.lang.Byte java.lang.Character java.lang.String java.lang.Short java.lang.Integer java.lang.Long java.lang.Float java.lang.Double java.lang.Class any enumeration type (i.e. a subclass of java.lang.Enum)
当然,您可以将您选择的格式的多个值写为String,例如用逗号分隔:
<Environment name="test" value="value1,value2" type="java.lang.String" override="false" />
String[] values = new InitialContext().lookup("java:comp/env/my_array").split(",");
您还可以使用任何其他格式,例如JSON。只要确保它不与XML语法冲突。