Hallo Leute,
ich habe nach folgender Anleitung ein Oracle Connectionpooling über JNDI versucht aufzubauen:
http://www.microdeveloper.com/html/JNDI_Orcl_Tomcat.html#Configuration
Ich kenne auch die folgende Anleitung, damit klappts aber auch nicht:
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/printer/jndi-datasource-examples-howto.html
Ich verwende den Tomcat 5.0 auf localhost, JDK 1.4.2 und Win XP und Oracle 10g.
Der relevante Teil der Server.xml sieht folgendermaßen aus (wie im erstgenannten Link beschrieben):
Der zugefügte Teil meiner web.xml sieht so aus:
Dann habe ich noch in der Datei C:\Programme\Apache\Tomcat_5.0\conf\META-INF\context.xml folgenden Inhalt:
Diese Datei ist außerdem noch in folgendem Ordner:
C:\Programme\Apache\Tomcat_5.0\conf\
Aufgerufen wird die Datasource folgendermaßen:
Ich bekomme aber folgende Fehlermeldung:
Den Oracle-JDBC-Treiber habe ich wie beschrieben nur in folgendem Verzeichnis:
C:\Programme\Apache\Tomcat_5.0\common\lib
Die url zur DB sollte stimmen, da ich mit dem Drivermanager mich mit dieser url einwandfrei connecten kann.
Ich habe jetzt schon eine Menge ausprobiert aber es will einfach nicht funktionieren. Habt ihr evtl. eine Ahnung woran das liegen kann?
Gruß
ich habe nach folgender Anleitung ein Oracle Connectionpooling über JNDI versucht aufzubauen:
http://www.microdeveloper.com/html/JNDI_Orcl_Tomcat.html#Configuration
Ich kenne auch die folgende Anleitung, damit klappts aber auch nicht:
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/printer/jndi-datasource-examples-howto.html
Ich verwende den Tomcat 5.0 auf localhost, JDK 1.4.2 und Win XP und Oracle 10g.
Der relevante Teil der Server.xml sieht folgendermaßen aus (wie im erstgenannten Link beschrieben):
Code:
<GlobalNamingResources>
...
<Resource name="jdbc/db1"
auth="Container"
type="oracle.jdbc.pool.OracleDataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
factory="oracle.jdbc.pool.OracleDataSourceFactory"
url="jdbc:oracle:thin:@ak:1521:kurse"
user="scott"
password="tiger"
maxActive="20"
maxIdle="10"
maxWait="-1" />
</GlobalNamingResources>
Der zugefügte Teil meiner web.xml sieht so aus:
Code:
<resource-ref>
<description>Oracle Development Datasource</description>
<res-ref-name>jdbc/db1</res-ref-name>
<res-type>oracle.jdbc.pool.OracleDataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Code:
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>META-INF/context.xml</WatchedResource>
<ResourceLink global="jdbc/db1" name="jdbc/db1"
type="oracle.jdbc.pool.OracleDataSource"/>
</Context>
C:\Programme\Apache\Tomcat_5.0\conf\
Aufgerufen wird die Datasource folgendermaßen:
Code:
public boolean openDatasource(){
try {
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
OracleDataSource ds = (OracleDataSource) envContext.lookup("jdbc/db1");
Connection conn = ds.getConnection("scott","tiger");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(SQLException e1){
e1.printStackTrace();
}
return true;
}
Ich bekomme aber folgende Fehlermeldung:
Code:
javax.naming.NamingException: Cannot create resource instance
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:132)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:301)
at org.apache.naming.NamingContext.lookup(NamingContext.java:791)
at org.apache.naming.NamingContext.lookup(NamingContext.java:138)
at org.apache.naming.NamingContext.lookup(NamingContext.java:779)
at org.apache.naming.NamingContext.lookup(NamingContext.java:151)
at first_Struts.DB_Handling.openDatasource(DB_Handling.java:111)
at first_Struts.DB_LookAction.insert(DB_LookAction.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:276)
at org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:162)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
Den Oracle-JDBC-Treiber habe ich wie beschrieben nur in folgendem Verzeichnis:
C:\Programme\Apache\Tomcat_5.0\common\lib
Die url zur DB sollte stimmen, da ich mit dem Drivermanager mich mit dieser url einwandfrei connecten kann.
Ich habe jetzt schon eine Menge ausprobiert aber es will einfach nicht funktionieren. Habt ihr evtl. eine Ahnung woran das liegen kann?
Gruß