2013-08-29 1 views
1

CloudBees에 배포 할 프로젝트가 있고 cloudbees-web.xml 파일 내에 일부 param-name을 정의했습니다. 내 Java 응용 프로그램에서 액세스하고 싶지만 System.getProperty(), (String) env.lookup ("email.user.name")을 사용해 보았습니다.cloudbees-web.xml <context-param> 값에 액세스

Java 내에서 어떻게 액세스합니까? 당신이 당신의 WEB-INF/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>[email protected]</param-value> 
       </context-param> 
      </cloudbees-web-app> 

답변

0

, 즉 : 아래

은 WEB-INF 아래에있는 내 cloudbees-web.xml 파일입니다 : 당신이 ServletContext에 액세스 할 수 있습니다, 또는 다른 당신이 그것을에 액세스 할 수있는 클래스에서 ServletContext를 전달해야 클래스 인스턴스에있을 필요가

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

참고.

일반적으로 서블릿 또는 JSP 페이지에서 제공하는 요청을 받거나 사용하고있는 프레임 워크는 컨텍스트에 액세스 할 수있는 방법을 제공합니다 (예 : Java Server Faces는 외부 컨텍스트 개념을 제공합니다 - ServletContext 또는 JSF는 두 컨테이너를 모두 지원하므로 PortletContext) 서블릿에서 매개 변수에 액세스하는 것일뿐입니다.

당신은 당신이 시작해야한다 (... 또는 최소한의 범위에서 서블릿 사양에 대해 엄격하게) 작업을 수행하는 백그라운드 스레드를 시작하는 경우 (및 중지 -을 중지하는 것을 잊지 마세요)을들을 스레드를 통해 ServletContextListener ... 또한 ServletContext 먹이면 ... 만약 당신이 대담한 사람과 클래스 정적 이니셜 라이저에서 배경 스레드를 시작하는 ... 잘 당신의 유일한 해결책은 ServletContextListener 설정을 끌어와 넘겨 백그라운드 스레드 ... 어떤 시점에서 ServletContextListener에서 트레드를 시작하는 것이 더 낫습니다 (동일한 .war 파일 문제의 로딩 다중 컨텍스트를 해결합니다 ... 실행 클라우드에있는 것이 아니라)