Connection Pool + Tomcat + Oracle10g

Status
Nicht offen für weitere Antworten.

hunter1977

Mitglied
Hallo,

ich versuche seit heute morge eine Verbindung vom Tomcat zu meiner Oracle10g Datenbank herzustellen,leider ohne Erfolg.

Hier die Fehlermeldung:
Code:
HTTP Status 500
exception

javax.servlet.ServletException: Unable to get connection, DataSource invalid: "org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'"
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:85)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'"
	org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnection(QueryTagSupport.java:276)
	org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(QueryTagSupport.java:159)
	org.apache.jsp.index_jsp._jspx_meth_sql_query_0(index_jsp.java:104)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:61)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

Ich habe den Code von Jakarta Tomcat verwendet, aber hier nochmal mein Code.
server.xml
Code:
Resource name="jdbc/myoracle" auth="Container"
              type="javax.sql.DataSource"/> 

<ResourceParams name="jdbc/myoracle">
  <parameter>
    <name>factory</name>
    <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
  </parameter>
  <parameter>
    <name>driverClassName</name>
    <value>oracle.jdbc.driver.OracleDriver</value>
  </parameter>
  <parameter>
    <name>url</name>
    <value>jdbc:oracle:thin:@localhost:1521:Test</value>
  </parameter>
  <parameter>
    <name>username</name>
    <value>SYSTEM</value>
  </parameter>
  <parameter>
    <name>password</name>
    <value>linux</value>
  </parameter>
  <parameter>
    <name>maxActive</name>
    <value>20</value>
  </parameter>
  <parameter>
    <name>maxIdle</name>
    <value>10</value>
  </parameter>
  <parameter>
    <name>maxWait</name>
    <value>-1</value>
  </parameter>
</ResourceParams>

web.xml
Code:
<?xml version = '1.0' encoding = 'windows-1252'?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">
  <description>Empty web.xml file for Web Application</description>
  <session-config>
    <session-timeout>35</session-timeout>
  </session-config>
  <mime-mapping>
    <extension>html</extension>
    <mime-type>text/html</mime-type>
  </mime-mapping>
  <mime-mapping>
    <extension>txt</extension>
    <mime-type>text/plain</mime-type>
  </mime-mapping>
  <resource-ref>
 <description>Oracle Datasource example</description>
 <res-ref-name>jdbc/myoracle</res-ref-name>
 <res-type>javax.sql.DataSource</res-type>
 <res-auth>Container</res-auth>
</resource-ref>
</web-app>

index.jsp
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page contentType="text/html;charset=windows-1252"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

<sql:query var="rs" dataSource="jdbc/myoracle">
select id, name, vorname from Testumgebung
</sql:query>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></meta>
    <title>
      Oracle DB-Test
    </title>
  </head>
  <body>
    <h2>Results</h2>
  
<c:forEach var="row" items="${rs.rows}">
    ID ${row.id}

    NAME ${row.name}

    VORNAME ${row.vorname}

</c:forEach>
  </body>
</html>

Kann mir jemand bei diesem Problem weiterhelfen. Ich habe den jdbc Treiber von Oracle nach common\lib kopiert so wie in der Anleitung von Jakarta.

Hunter
 
nur zur sicherheit Shareable machen
Code:
    <Resource auth="Container"
        name="jdbc/myoracle"
        scope="Shareable"            
        type="javax.sql.DataSource"/>
wo liegt denn das Fragment -> in GlobalRessources oder der Webapp

Treiberdatei: welche, ggf. von .zip nach .jar umbenennen

catalina.out anschauen, möglcherweise Meldung beim Hochfahren?
 
Hallo,

also ich habe die Datasource in /conf/server.xml eingetragen. Ich habe den JDBC Treiber von Oracle und der heißt classes12.jar und liegt in /common/lib.

Diese Fehlermeldung erscheint bei mir im log File:
Code:
2005-01-14 14:18:24 StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'"
	at org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnection(QueryTagSupport.java:276)
	at org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(QueryTagSupport.java:159)
	at org.apache.jsp.index_jsp._jspx_meth_sql_query_0(index_jsp.java:104)
	at org.apache.jsp.index_jsp._jspService(index_jsp.java:61)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	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(Unknown Source)
 
So, ich habe das ganze jetzt mal mit MySQL getestet und auch hier geht das Beispiel nicht.
Ich benutze das jdk1.4.2_06 habe kein J2EE installiert, der Tomcat ist die Version 5.0.28
und die Datenbanken werden im Tomcat Manager als DataSource angezeigt.

Hat jemand eine Idee woran das liegen kann.

Danke Hunter
 
tippe auf einen Fehler in der server.xml, s. oben

oder

hast du irgendwelche alten/neuen xml parser in /lib/ext?
 
Hallo,

ich habe die Einstellungen für den Manager aus dem Admin Tool von Tomcat gemacht, ich denke da werden keine Fehler passieren. Außerdem habe ich das Beispiel von Jakarta Tomcat kopiert.

Ich verwende keine alten XML Parser, diese sind doch bei der neuen Tomcat Version gar nicht mehr dabei.

Hat jemand eine Idee oder ein Beispiel was auf jeden Fall funktioniert?

Danke Hunter
 
>>ich habe die Einstellungen für den Manager
>>aus dem Admin Tool von Tomcat gemacht,

oje, vergiss das Admin Tool, das nimmt kein Mensch her und ist fehlerhaft; am besten gleich löschen

editier alle conf-Dateien von Hand, damit sparst du dir viel ärger
 
Okay, ich habe jetzt alles schon per Hand editiert. Leider kann ich immer noch nicht über einen Connection Pool auf die DB zugreifen.
Wenn ich die DB Zugriffe in die JSP schreibe, kann ich ohne Probleme auf die DB zugreifen.

Hat jemand eine Idee woran das liegen kann?

Danke Hunter
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben