Nieznane wartosci w obiektach jndi

0

Witam, mam problem: testuje moja aplikacje na moim tomcatcie (7+). Aplikacja polega na obiektach JNDI w pliku tomcata context.xml zeby uzyskac polaczenie z baza danych. Gdy aplikacja jest uruchomiona na moim serwerze - dziala poprawnie, moj kawalek kodu przeglada plik context.xml i pobiera odpowiednie wartosci, przypisuje do tymczasowego obiektu i tworzy polaczenie z baza danych. Ta sama aplikacja, z tym samym plikiem context.xml na innym serwerze dziala dziwnie - odczytywany jest jakby nie tylko moj context.xml, ale cos innego - podgladane wartosci sa mi zupelnie obce. Ponizej kawalek kodu zeby zobrazowac co robie:

DataSource ds = null;
InitialContext ic = null;
try {
	ic = new InitialContext();
	Context ctx = (Context) new InitialContext().lookup("java:comp/env/jdbc");
	NamingEnumeration<Binding> list = ctx.listBindings("");
	while (list.hasMore()) {
		Binding item = (Binding) list.next();
		parameterLookup(item);
parameterLookup(Binding binding) {
	Object o = binding.getObject();
	for (Field field : o.getClass().getDeclaredFields()) {
		field.setAccessible(true);
		Object value = null;
		try {
			value = field.get(o);
			String tmp = value.toString();
			System.out.println("Wartosc zmiennej temp: " + temp);

Wartosci zmiennej temp na cudzym serwerze to jakies zupelnie mi nieznane rzeczy. Moj context.xml wyglada mniej wiecej tak (ponizej) i takich wartosci bym sie spodziewal:

<Resource name="jdbc/costam" url="jakisUrl" driverClassName="sterownikOracla"
user="user" password="password" factory="domyslny springBeanFactory" />

Teraz pytanie - czy sposob w jaki laduje "kontekst" jest nieodpowiedni do tego co chce osiagnac (odczytac tylko zawartosc mojego pliku context.xml)?

0

Przecież po to nazywasz sobie swój zasób name="jdbc/costam" żeby móc go potem po tej nazwie wyciągnąć. Bez żadnej magii.
Np.

ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/costam");
0

Rzecz w tym, ze nie bede pozniej znac nazw dodanych przez innych ludzi zasobow, ale mimo to bede musial ich uzywac. Pomijajac juz to jak odczytuje DataSource - skad moga sie wziac te nieznane wartosci?

0

To zależy od kontenera. Może tam już są "bindnięte" jakieś inne obiekty oprócz Twojego. Możesz sobie zamiast tej wędrówki po polach w parameterLookup wypisać chociaż co to za obiekty binding.getClassName(), binding.getObject().toString(). Może to coś rozjaśni.

0

Ok, okazalo sie, ze na innym serwerze bylo cos innego uzywane niz domyslny beanFactory, wiec i parsowanie obiektow nie moglo dzialac w taki sposob. Dzieki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1