SORU
4 Kasım 2010, PERŞEMBE


Java:comp/env/ ne yapar?

Ben bazı JNDI fabrika fasulye çengel zaman sadece benim gün çok fazla zaman bazı hatalar geçirdi anlamaya çalışıyorum. Sorun şu bu yerine çıktı...

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

Aslında bu yazılı vardı

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

Java:comp/env/ belki biraz ortam değişkeni başvuruları ve, sonuçta, benim içerik dosyası sorumlusu bakmış çıkarıyorum. Tek fark java:comp/env/. Bir uzmanın ağzından, o ne yapıyor?

Değer olmadan java:comp/env önek, dedi, bir hata olacaktı "Adı bulunmaktaydı bu Bağlamda bağlı değildir".

CEVAP
4 Kasım 2010, PERŞEMBE


http://v1.dione.zcu.cz/java/docs/jndi-1.2/tutorial/beyond/misc/policy.html alıntı

Ad kök bağlamda adı ile bağlama"", comp bir ağaçta bağlı saklıdır bileşen ile ilgili bağlamaları için. Bu adı "comp" bileşeni için kısa. Bu başka bir bağları yok bağlam kök. Ancak, kök bağlam geleceği için ayrılmıştır politikasının genişleme, özellikle bağlı kaynaklar adlandırma diğer bileşen kendisine ama kullanıcılar gibi varlıkların türleri veya bölümler. Örneğin, gelecek ilkeleri kullanıcı adı için izin verebilir ve örgütler kullanarak bölüm/ adı": Kullanıcı/alice java" gibi ": org/mühendislik java".

""Kapsamında, iki vardır comp içinde bağlamalar: "" ve "". UserTransaction env Adı" bir ağaçta bağlı "env bu bileşen için ayrılmıştır çevre bağlantıları olarak dağıtım tanımlayıcısı tarafından tanımlanan. "env" çevre için kısa. Bu J2EE önerir (ama gerektirmez) "special"için aşağıdaki yapısı ad.

Tomcat içerik tanımlayıcısı gelen bahar ya da, örneğin, yaptığın bağlama altında varsayılan olarak java:comp/env/ git

Yapılandırma, örneğin:

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

O zaman doğrudan kullanarak erişebilirsiniz:

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

veya": comp/env" her kaynak için almak: . java belirtmek zorunda değilsin bu yüzden bir ara adım yapabilirsin

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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • InsideBlackBerry

    InsideBlackB

    14 Aralık 2009
  • TouchePro

    TouchePro

    27 EYLÜL 2007
  • Xbox

    Xbox

    1 Kasım 2005