2013-08-23 8 views
17

Tomcat 응용 프로그램의 JNDI 바인딩에 연결 URL을 저장하고 싶습니다. Tomcat은 JNDI 리소스 정의에 context.xml을 사용하기 때문에 context.xml에 String (또는 여러 연결에 대해 여러 문자열)을 저장하는 속성 방법을 알아야합니다.context.xml에 문자열 값을 저장하는 방법

내 이유는 다른 환경에 대해 서로 다른 문자열을 정의하고 JNDI를 통해로드 할 수있게하기 위해서입니다.

은 보통, 정말 같은 항목을 참조하십시오

<Context ...> 
    <Resource name="myConnectionURL" auth="Container" 
      type="java.lang.String" 
      description="A connection URL string."/> 
</Context> 

그렇다면, 가 어디 실제로 문자열 값을 저장 않습니다

<Context ...> 
    <Resource name="someName" auth="Container" 
      type="someFullyQualifiedClassName" 
      description="Some description."/> 
</Context> 

같이 정말 간단 그것을인가?!?! 그리고 그것은 올바른 아니라면, 다음 그래서 나는 다음과 같이 그것을 볼 수 있었다 나를 context.xml에서, 예를 들어, "amqp:5272//blah.example.com&param1=4"를 저장하기위한 적절한 방법은 무엇입니까 : 사전에

Context ctx = new InitialContext(); 
String connectionURL = (String)ctx.lookup("myConnectionURL"); 

감사합니다!

답변

6

이 요소 안에 요소를 중첩하여 서블릿 컨텍스트 초기화 매개 변수로 웹 응용 프로그램에 표시되는 명명 된 값을 구성 할 수 있습니다. 예를 들어, 다음과 같은 초기화 매개 변수를 만들 수 있습니다

Java 코드의 모양
<Context> 
     ... 
    <Parameter name="companyName" value="My Company, Incorporated" 
      override="false"/> 
     ... 
</Context> 

    This is equivalent to the inclusion of the following element in the web application deployment descriptor (/WEB-INF/web.xml): 



<context-param> 
     <param-name>companyName</param-name> 
     <param-value>My Company, Incorporated</param-value> 
</context-param> 

ServletContext sc = getServletContext(); 

String companyName = sc.getInitParameter("companyName"); 

참조 http://tomcat.apache.org/tomcat-7.0-doc/config/context.html

+3

답변으로 표시되어 원래 질문 제출자에게 도움이되었을지라도 질문에 대한 답변을 제공하지 않습니다. 이 질문에 대한 해결책을 찾고있는이 게시물에 오시는 분들은 @Stoffe가 제공 한 답변을 참조하십시오 – loesak

18

당신은 Environment 태그를 사용할 수 있습니다 참조하십시오

<Context> 
    <Environment name="myConnectionURL" value="amqp:5272//blah.example.com&param1=4" type="java.lang.String"/> 
</Context> 

그리고 거의 y와 같이 읽을 수 있습니다. OU는 질문에 지정된 :

InitialContext initialContext = new InitialContext(); 
Context environmentContext = (Context) initialContext.lookup("java:/comp/env"); 
String connectionURL = (String) environmentContext.lookup("myConnectionURL"); 

이 많이 Parameter 태그를 사용하는 것과 동일하지만, ServletContext를 필요로하지 않고.

+0

파일 이름은'context.xml'이어야하고 어디에 저장되어 있습니까? – gkiko

+0

@gkiko : Tomcat에서는'context.xml'이라고하며, Tomcat 설치의'conf' 디렉토리에, 보통/usr/share/tomcat/conf/context.xml에있는 * nix에 이미 있어야합니다. 다른 웹 서버에는 다른 파일 및 규칙이 있습니다. – Stoffe