복붙노트

[SPRING] java : comp / env / do는 무엇입니까?

SPRING

java : comp / env / do는 무엇입니까?

JNDI factory bean을 연결할 때 약간의 오류를 알아 내려고 너무 많은 시간을 보냈습니다. 문제는 그 대신에 이렇게 밝혀졌다.

<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName" value="java:comp/env/jdbc/loc"/>
</bean>

나는 이것을 실제로 작성했다 ...

<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName" value="jdbc/loc"/>
</bean>

나는 java : comp / env /가 어떤 환경 변수를 참조하고 그것을 궁극적으로 나의 컨텍스트 파일을 보도록 만든다고 추론한다. 유일한 차이점은 java : comp / env /입니다. 전문가의 입에서, 그것은 무엇을합니까?

값에 java : comp / env 접두어가 없으면 "이름 jdbc가이 컨텍스트에서 바인드되지 않았습니다."라는 오류가 발생합니다.

해결법

  1. ==============================

    1.인용 https://web.archive.org/web/20140227201242/http://v1.dione.zcu.cz/java/docs/jndi-1.2/tutorial/beyond/misc/policy.html

    인용 https://web.archive.org/web/20140227201242/http://v1.dione.zcu.cz/java/docs/jndi-1.2/tutorial/beyond/misc/policy.html

    예를 들어 봄철 또는 Tomcat 컨텍스트 설명자에서 바인딩 한 내용은 기본적으로 java : comp / env /

    예를 들어 구성이 다음과 같은 경우 :

    <bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
      <property name="jndiName" value="foo"/>
    </bean>
    

    그러면 다음을 사용하여 직접 액세스 할 수 있습니다.

    Context ctx = new InitialContext();
    DataSource ds = (DataSource)ctx.lookup("java:comp/env/foo");
    

    또는 중간 단계를 수행하여 검색하는 모든 자원에 대해 "java : comp / env"를 지정할 필요가 없습니다.

    Context ctx = new InitialContext();
    Context envCtx = (Context)ctx.lookup("java:comp/env");
    DataSource ds = (DataSource)envCtx.lookup("foo");
    
  2. ==============================

    2.또한 true로 설정된 경우 JndiObjectFactoryBean의 속성 resourceRef가 있으며 java : comp / env / 문자열 앞에 자동으로 추가됩니다.

    또한 true로 설정된 경우 JndiObjectFactoryBean의 속성 resourceRef가 있으며 java : comp / env / 문자열 앞에 자동으로 추가됩니다.

    <bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
      <property name="jndiName" value="jdbc/loc"/>
      <property name="resourceRef" value="true"/>
    </bean>
    
  3. ==============================

    3.여러 번 시도한 후 Tomcat의 소스 코드를 자세히 살펴보면 간단한 속성 useNaming = "false"가 트릭을 수행한다는 것을 알게되었습니다 !! 이제 Tomcat은 java : / env / liferay 대신 java : / liferay라는 이름을 결정합니다.

    여러 번 시도한 후 Tomcat의 소스 코드를 자세히 살펴보면 간단한 속성 useNaming = "false"가 트릭을 수행한다는 것을 알게되었습니다 !! 이제 Tomcat은 java : / env / liferay 대신 java : / liferay라는 이름을 결정합니다.

  4. from https://stackoverflow.com/questions/4099095/what-does-javacomp-env-do by cc-by-sa and MIT license