1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Datenbank Resource wird nicht gefunden

Dieses Thema im Forum "Enterprise Java (JEE, J2EE, Spring & Co.)" wurde erstellt von messmar, 25. Mai 2016.

  1. messmar

    messmar Erfahrenes Mitglied

    Hallo zusammen,

    Ich schreibe einen Jersey REST API Service, der von einer Java Klasse (Subresource) aus, Zugriff und Verbindung auf lokale Datenbank steuert.. der Code scheint zunächst Fehlerfrei zu laufen bis auf die Meldung, dass die angegebene datasource nicht gefunden wird.

    In Context.xml unter WEB-INF Verzeichnis, habe ich die Node Resource eingebettet und die nötigen Informationen eingetragen. Der Fehler taucht weiterhin auf.

    Context.xml:
    Code (XML):
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <Context path="/userProfile">
    3. <Resource
    4.  auth="Container"
    5.  driverClassName="org.postgresql.Driver"
    6.  maxActive="100"
    7.  maxIdle="30"
    8.  maxWait="10000"
    9.  name="apiUserProfile"
    10.  password="postgres"
    11.  type="javax.sql.DataSource"
    12.  url="jdbc:postgresql://localhost:5432/apiUserProfile"
    13.  username="postgres"/>
    14. </Context>
    Apache Tomcat Log Error:
    Code (HTML5):
    1. javax.naming.NameNotFoundException: Name [apiUserProfile] is not bound in this Context. Unable to find [apiUserProfile].
    2.    at org.apache.naming.NamingContext.lookup(NamingContext.java:818)
    3.    at org.apache.naming.NamingContext.lookup(NamingContext.java:166)
    4.    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:157)
    5.    at javax.naming.InitialContext.lookup(InitialContext.java:411)
    6.    at net.rest.dao.DbConn.apiUserProfileConn(DbConn.java:23)
    7.    at net.rest.service.userProfile.returnDatabaseStatus(userProfile.java:51)
    Verwendet wird:
    Ubuntu 14.04
    Apache Tomcat 8.0
    Jersey 1.9
    Netbeans 8.1

    Ich gehe davon aus, dass man auch in server.xml von Tomcat die Resource für DB eintragen muss, aber ich bin mir nicht ganz sicher, ob das die Ursache ist.

    Hat bitte Jemand eine Idee oder Tipp, woran es legen könnte?

    Danke
    Messmar
     
  2. messmar

    messmar Erfahrenes Mitglied

    Morgen,

    gefixt.. da es für das allgemeine Interesse, hierbei meine Lösung..

    Folgendes, erstmal war die Apache Tomcat doc sehr hilfreich und die findet man unter:

    Code (HTML5):
    1. http://localhost:yourPort/docs/jndi-datasource-examples-howto.html
    2. http://localhost:yourPort/docs/jndi-datasource-examples-howto.html#PostgreSQL
    dann die context.xml (unter META-INF) und web.xml (unter WEB-INF) folgendes einfügen:

    context.xml:
    Code (HTML5):
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <Context path="/YourContextApp">
    3.   <Resource name="jdbc/apiUserProfile" auth="Container"
    4.  type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
    5.  url="jdbc:postgresql://127.0.0.1:5432/apiUserProfile"
    6.  username="postgres" password="postgres" maxTotal="20" maxIdle="10"
    7. maxWaitMillis="-1"/>
    8. </Context>
    web.xml:
    Code (HTML5):
    1. <resource-ref>
    2.   <description>postgreSQL Datasource example</description>
    3.   <res-ref-name>jdbc/apiUserProfile</res-ref-name>
    4.   <res-type>javax.sql.DataSource</res-type>
    5.   <res-auth>Container</res-auth>
    6.   </resource-ref>
    dann folgendes in der Java Class, die die DB connection erstellt:

    Code (HTML5):
    1. ...
    2. DbConn = (DataSource) context.lookup("java:/comp/env/jdbc/apiUserProfile");
    3. ...
    Damit hat es für mich funkt.

    Grüße
    Messmar
     
    sheel gefällt das.
Die Seite wird geladen...