Jestem nowy w konfigurowaniu zasobów JNDI i konfigurowaniu zasobów JNDI w Tomcat.Jak skonfigurować <Resource> w Tomcat 7, aby nie było potrzeby używania "java:/comp/env" w kodzie?
Odziedziczyłem aplikację serwletu. Działa na serwerze testowym za pośrednictwem WebLogic. Aplikacja serwletu uzyskuje dostęp do zasobu bazy danych w następujący sposób:
ctx = new InitialContext();
ds = (javax.sql.DataSource)ctx.lookup("myDataBaseName");
conn = ds.getConnection();
Kiedy próbowałem tego w testowym JSP, to nie działa. Mam
javax.naming.NameNotFoundException: Name myDataBaseName is not bound in this Context
Jednak udało mi się uczynić pracę Test JSP gdybym zmienił testowy kod JSP tak:
ctx = new InitialContext();
Context envContext = (Context)ctx.lookup("java:/comp/env");
ds = (DataSource)envContext.lookup("myDataBaseName");
conn = ds.getConnection();
mam ten wpis TOMCAT_HOME/conf/context.html (I” m po prostu używając go jako środowiska dev na moim oknie)
<Resource name="myDataBaseName"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@blahblahblah:1521:database3"
username="joeuser"
password="password"
maxActive="20"
maxIdle="30"
maxWait="-1"/>
</Context>
I mam to w moim TOMCAT_HOME/conf/web.xml:
<resource-ref>
<res-ref-name>myDataBaseName</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Czytałem około 10 stackoverflow stron dotyczących pokrewnych problemów, ale nie jestem dość znany z konfigurowania zasobów JNDI, aby streścić te rozwiązania mojego problemu.
Jak mogę zmienić sposób, w jaki mam zainstalowany Tomcat 7, aby umożliwić istniejącej aplikacji serwletu dostęp do jej bazy danych jako "myDatabaseName"? Nie mam możliwości zmiany kodu w aplikacji serwletu ani zmiany sposobu konfiguracji WebLogic na serwerze testowym.
Potrzebuję zmienić sposób, w jaki moja kopia Tomcat 7 jest skonfigurowana na moim komputerze (dla środowiska dev), aby umożliwić aplikacji serwletu dostęp do jej bazy danych w stylu pierwszego fragmentu cytowanego kodu na górze tego postu.
PO mówi, że nie można zmienić istniejący kod, który jest zakodowanego tylko 'ctx.lookup („myDataBaseName”)', muszą zmienić konfigurację Tomcat w celu wyeliminowania potrzeba 'java:/com/env /' –
@Jarrod Roberso: Trudno, jak sądzę. – Olaf