Forum Doku Wiki Blog

Forumsarchiv 2002, Oktober
JSP: Problem beim öffnen einer JDBC-Connection

archivierte Beiträge lesen

  1. (JAVA) JSP: Problem beim öffnen einer JDBC-Connection von fredy, 10. 10. 2002, 11:34

JSP: Problem beim öffnen einer JDBC-Connection

Der folgende Beitrag wurde am 10. 10. 2002, 11:34 Uhr von fredy veröffentlicht.

Hi!

Ich möchte in einer JSP eine JDBC-Connection öffnen.
Die dafür nötigen Packages (javax.sql, JDBC-Treiber) sind in den
Verzeichnis /common/classes bzw. /common/lib

Beim Öffnen der Connection erhalte ich den folgenden Fehler:
javax.servlet.ServletException: Cannot create resource instance

Was mache ich falsch? Wie könnte ich den Fehler eingrenzen?

Danke und liebe Grüße
Manfred Steyer






ps.:
Der genaue Stack-Trace:

javax.servlet.ServletException: Cannot create resource instance
 at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:463)
 at org.apache.jsp.test$jsp._jspService(test$jsp.java:78)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java)
 at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:202)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2343)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1012)
 at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1107)
 at java.lang.Thread.run(Thread.java:484)


root cause

javax.naming.NamingException: Cannot create resource instance
 at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:167)
 at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:834)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:181)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:822)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:194)
 at org.apache.jsp.test$jsp._jspService(test$jsp.java:67)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java)
 at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:202)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2343)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1012)
 at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1107)
 at java.lang.Thread.run(Thread.java:484)

JSP: Problem beim öffnen einer JDBC-Connection

Der folgende Beitrag wurde am 10. 10. 2002, 12:35 Uhr von fjh veröffentlicht.

Hallo Manfred,

> Ich möchte in einer JSP eine JDBC-Connection öffnen.
> Die dafür nötigen Packages (javax.sql, JDBC-Treiber) sind in den
> Verzeichnis /common/classes bzw. /common/lib

Du benutzt also offensichtlich Tomcat als Servlet/JSP-Container.

Dann musst du aber Tomcat auch entsprechend konfigurieren, also
1. im Deployment Descriptor für Deine Web-Applikation eine Resource-Referenz angeben
2. In der server.xml die Resource anmelden
3. In der Tomcat-Konfiguration den Namen der JDBC-Ressource dem Kontext der Webapplikation mitgeben (die geworfene Naming-Exception deutet in diese Richtung!)

Steht hier z.B. ganz gut beschrieben (http://java.sun.com/webservices/docs/1.0/tutorial/doc/WebApp13.html#69868), v.a. wenn du mit Tomcat 4.1x arbeitest. Läßt sich aber auch für die 4.0.x Versionen rauslesen was zu tun ist


> Beim Öffnen der Connection erhalte ich den folgenden Fehler:
> javax.servlet.ServletException: Cannot create resource instance

> Was mache ich falsch? Wie könnte ich den Fehler eingrenzen?

Zunächst mal die Konfiguration überprüfen.
Evtl. Rechteprobleme?

Gruß
Franz

JSP: Problem beim öffnen einer JDBC-Connection

Der folgende Beitrag wurde am 10. 10. 2002, 16:10 Uhr von fredy veröffentlicht.

Hallo!

Danke - Aber ich glaube, dass ich das gemacht habe:


:: web.xml

<Context path="" docBase="ROOT" debug="1" reloadable="true">
<Resource name="jdbc/autodb" auth="Container"
           type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/autodb">
  <parameter>
    <name>user</name>
    <value>...</value>
  </parameter>
  <parameter>
    <name>password</name>
    <value>...</value>
  </parameter>
  <parameter>
    <name>driverClassName</name>
    <value>org.gjt.mm.mysql.Driver</value>
  </parameter>
  <parameter>
    <name>driverName</name>
    <value>autodb=jdbc:mysql://172.22.51.208/db</value>
  </parameter>
</ResourceParams>
</Context>


:: server.xml

<web-app>
<resource-ref>
  <description>
  </description>
  <res-ref-name>
    jdbc/autoDB
  </res-ref-name>
  <res-type>
    javax.sql.DataSource
  </res-type>
  <res-auth>
    Container
  </res-auth>
</resource-ref>
</web-app>

Muss ich sonst noch ein File bearbeiten ?

Danke und lG
fredy

JSP: Problem beim öffnen einer JDBC-Connection

Der folgende Beitrag wurde am 10. 10. 2002, 16:45 Uhr von fjh veröffentlicht.

Hallo,

> :: web.xml

> <Context path="" docBase="ROOT" debug="1" reloadable="true">
> <Resource name="jdbc/autodb" auth="Container"
>            type="javax.sql.DataSource"/>
> <ResourceParams name="jdbc/autodb">
>   <parameter>
>     <name>user</name>
>     <value>...</value>
>   </parameter>
>   <parameter>
>     <name>password</name>
>     <value>...</value>
>   </parameter>
>   <parameter>
>     <name>driverClassName</name>
>     <value>org.gjt.mm.mysql.Driver</value>
>   </parameter>
>   <parameter>
>     <name>driverName</name>
>     <value>autodb=jdbc:mysql://172.22.51.208/db</value>
>   </parameter>
> </ResourceParams>
> </Context>

Also das obere steht bei mir nicht in der web.xml, sondern in der server.xml und das untere in der web.xml. Da wirst Du dich vermutlich aber nur veschusselt haben. Allerdings stimmen die Namen der Ressource nicht überein. Oben hat das name-Attribut des <Resource>-Elements den Wert "jdbc/autodb", während der Inhalt des Elements <res-ref-name> "jdbc/autoDB" lautet (db versus DB!). Kontextsensitivität vorausgesetzt, matchen die Namen nicht und es wird eine Naming-Exception geworfen.


> :: server.xml

> <web-app>
> <resource-ref>
>   <description>
>   </description>
>   <res-ref-name>
>     jdbc/autoDB
>   </res-ref-name>
>   <res-type>
>     javax.sql.DataSource
>   </res-type>
>   <res-auth>
>     Container
>   </res-auth>
> </resource-ref>
> </web-app>

Gruß
Franz

JSP: Problem beim öffnen einer JDBC-Connection

Der folgende Beitrag wurde am 11. 10. 2002, 11:03 Uhr von fredy veröffentlicht.

Hi!

Jetzt hab ichs angepasst, sodass es überall autoDB heisst.
Aber es funzt noch immer nicht.

Muss man sonst noch irgendwo was einstellen ?

Danke und lG
fredy



> Hallo,

> > :: web.xml

> > <Context path="" docBase="ROOT" debug="1" reloadable="true">
> > <Resource name="jdbc/autodb" auth="Container"
> >            type="javax.sql.DataSource"/>
> > <ResourceParams name="jdbc/autodb">
> >   <parameter>
> >     <name>user</name>
> >     <value>...</value>
> >   </parameter>
> >   <parameter>
> >     <name>password</name>
> >     <value>...</value>
> >   </parameter>
> >   <parameter>
> >     <name>driverClassName</name>
> >     <value>org.gjt.mm.mysql.Driver</value>
> >   </parameter>
> >   <parameter>
> >     <name>driverName</name>
> >     <value>autodb=jdbc:mysql://172.22.51.208/db</value>
> >   </parameter>
> > </ResourceParams>
> > </Context>

> Also das obere steht bei mir nicht in der web.xml, sondern in der server.xml und das untere in der web.xml. Da wirst Du dich vermutlich aber nur veschusselt haben. Allerdings stimmen die Namen der Ressource nicht überein. Oben hat das name-Attribut des <Resource>-Elements den Wert "jdbc/autodb", während der Inhalt des Elements <res-ref-name> "jdbc/autoDB" lautet (db versus DB!). Kontextsensitivität vorausgesetzt, matchen die Namen nicht und es wird eine Naming-Exception geworfen.


> > :: server.xml

> > <web-app>
> > <resource-ref>
> >   <description>
> >   </description>
> >   <res-ref-name>
> >     jdbc/autoDB
> >   </res-ref-name>
> >   <res-type>
> >     javax.sql.DataSource
> >   </res-type>
> >   <res-auth>
> >     Container
> >   </res-auth>
> > </resource-ref>
> > </web-app>

> Gruß
> Franz

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4