Po prostu spędziłem zbyt dużo czasu w ciągu dnia, próbując znaleźć błędy podczas podłączania fabrycznej fasoli JNDI. Problem okazał się taki, że zamiast tego ...
<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/loc"/>
</bean>
Właściwie to napisałem ...
<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/loc"/>
</bean>
Wnioskuję, że java:comp/env/
być może odwołuje się do jakiejś zmiennej środowiskowej i sprawia, że ostatecznie przeglądany jest mój plik kontekstu. Jedyna różnica to java:comp/env/
. Z ust eksperta, co to robi?
Bez java:comp/env/
przedrostka w wartości wystąpiłby błąd o treści „Nazwa jdbc nie jest związana w tym kontekście” .
jdbc/loc
i dlategojava:comp/env/jdbc/loc
jest poprawna), podczas gdy odpowiedź cherouvima sugeruje, że nieprawidłowo użyłeś pierwszego przykładu (java:comp/env/jdbc/loc
i dlategojdbc/loc
jest poprawna). Niezależnie od tego, prawdziwa odpowiedź brzmi: zależy to od aktualnego kontekstu.