1

我有一个要部署到 CloudBees 的项目,并且在我的 cloudbees-web.xml 文件中定义了一些参数名称。我想从我的 java 应用程序中访问这些,但尝试了 System.getProperty(),(String)env.lookup("email.user.name") 都没有运气。

如何从 Java 中访问这些?

以下是位于 WEB-INF 下的 cloudbees-web.xml 文件:

            <?xml version="1.0"?>
            <cloudbees-web-app xmlns="http://www.cloudbees.com/xml/webapp/1">
              <!-- Changed for Privacy -->
              <appid>CB_ACCOUNT/APPNAME</appid>

              <!-- Extra context parameters -->
              <context-param>
                <param-name>email.user.name</param-name>
                <param-value>test@gmail.com</param-value>
              </context-param>
            </cloudbees-web-app>
4

1 回答 1

0

您可以访问这些上下文参数,就像您可以访问您定义的任何上下文参数一样WEB-INF/web.xml,换句话说:

getServletContext().getInitParameter("email.user.name")

请注意,您需要位于有权访问 的类实例中ServletContext,否则您需要ServletContext从有权访问它的类传递 。

通常,您将拥有由 Servlet 或 JSP 页面提供服务的请求……或者您正在使用的框架将提供访问上下文的方法(例如,Java Server Faces 提供了外部上下文概念 - 这是 aServletContext或 a PortletContext,因为 JSF 支持这两者容器),所以在这些情况下,这只是从 servlet 访问参数的问题。

如果您正在启动后台线程来完成工作(这严格违反 Servlet 规范...或至少超出范围),您应该ServletContextListener通过...启动(并停止 - 不要忘记停止它们)这些线程这也被喂ServletContext...ServletContextListener你最好从ServletContextListener(也解决了从同一个.war文件加载多个上下文的问题......不是你会在 RUN@cloud 上拥有那个)

于 2013-08-30T08:50:17.917 回答