check the logs earlier, if you havent moved the mysql-xxx.jar into TC_HOME/lib, then tomcat can't create the connection pool, and the JDBC name will not exist

Filip

arturoguedez wrote:
The error hasn't actually changed from the one I posted originally. Is there
any way of changing Tomcat's logging to display more information? I know
there is a reference to a Ejb3Configuration.buildEntityManagerFactory but i
am not actually using EJB3's. I am just using the
EntityManagers/EntityManagerFactory that uses config from persistence.xml, a
file in which you can tell it what datasource to make your persistence unit
to use. I tell it to use "jdbc/workout_logger".

I guess I can try writing a simple Servlet that tries to get the context
using the example in Tomcat's docs. I just thought that in the end, all ways
call the same InitialContext.lookup method.

Arturo
- I have copied the same stacktrace that I am getting. It's almost as if the
config changes haven't done anything. Just to make sure that it's loading
the files, I tried to start tomcat with a "broken" xml and it fails to
start, so I know that it's loading the right config files.

1 17:32:17 ERROR ceConnectionProvider: Could not find datasource:
jdbc/workout_logger
 javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
        at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
        at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
        at org.apache.naming.SelectorContext.lookup(SelectorContext.java:137)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at

org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75) at

org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137) at

org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:89) at
 org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)         
at

org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325) at

org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) at

org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669) at

org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126) at

javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
 ....


Filip Hanik - Dev Lists wrote:
post the actual error you see with the new config

arturoguedez wrote:
Thanks for the help. I just tried it and it still does work.

Here is the exact content of my current server.xml and my context.xml
Server.xml:

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">

  <Listener className="org.apache.catalina.core.AprLifecycleListener"
SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener
className="org.apache.catalina.mbeans.ServerLifecycleListener"
/>
  <Listener
className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
/>

  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />

    <Resource name="jdbc/workout_logger" auth="Container"
type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="user" password="password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/workout_logging?autoReconnect=true"/>

  </GlobalNamingResources>

  <Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>

    </Engine>
  </Service>
</Server>



Context.xml

<?xml version='1.0' encoding='utf-8'?>
<Context>

    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <ResourceLink name="jdbc/workout_logger"
global="jdbc/workout_logger"/>

</Context>



I check and my db user "user" has full access to the DB it's trying to
use.
Is it possible that I am missing a library or something in the classpath
of
tomcat? I already have the mysql connector library ( I had my DB
connections
working fine without datasources before, but I am trying to switch to
using
datasources).

Thanks again

Arturo




Filip Hanik - Dev Lists wrote:
put this

 <Resource name="jdbc/workout_logger
" auth="Container"
   type="javax.sql.DataSource"
   maxActive="100" maxIdle="30" maxWait="10000"
   username="user" password="password"
   driverClassName="com.mysql.jdbc.Driver"
   url="jdbc:mysql://localhost:3306/database_name?autoReconnect=true"/>

inside the <GlobalNamingResources> in server.xml

Put this

 <ResourceLink name="jdbc/workout_logger" global="jdbc/workout_logger"/>

inside the <Context> elemement in conf/context.xml


and try again

Filip

arturoguedez wrote:
hey, sorry about that. The actual string I have in my app is
"workout_logger"
I just tried to replace my strings for "my_jdbc_name" for the posting.
I
guess I forgot to rename the in the error.

other than that, do you see anything else wrong?



Filip Hanik - Dev Lists wrote:
here is the name you specify

<res-ref-name>jdbc/my_jdbc_name</res-ref-name>

and here is your error
Could not find datasource:jdbc/workout_logger

as you can see, somewhere you have configured the string
workout_logger, and that one doesn't exist

Filip

arturoguedez wrote:
Hi!

I have been reading how to setup datasources for Tomcat 6.0.18 in
http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html
and nothing I have done has allowed my web application to view the
datasource i have created.

Here are some snippets of my web.xml, and my server.xml
In the web.xml

<resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/my_jdbc_name</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
</resource-ref>

In server.xml
I have tried to place the following snip it anywhere I saw in the
docs
it
could belong to (ei, in the GlobalNamingResources, inside the Host
tag,
or
inside the Context tag in all possible locations (under
META-INF/context.xml, under
$CATALINA_BASE/conf/[engine]/[host]/[path].xml)
and I haven't been successful.

 <Resource name="jdbc/my_jdbc_name" auth="Container"
type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="user" password="password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/database_name?autoReconnect=true"/>


I am using Entity Managers to get my connections opened, here is the
snip
it
of my persistence.xml

       <persistence-unit name="my_pu_name"
transaction-type="RESOURCE_LOCAL">
                <non-jta-data-source>jdbc/my_jdbc_name</non-jta-data-source>
        </persistence-unit>

Here is what I get in my tomcat logs:

08/12/21 17:32:17 ERROR ceConnectionProvider: Could not find
datasource:
jdbc/workout_logger
javax.naming.NameNotFoundException: Name jdbc is not bound in this
Context
        at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
        at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
        at
org.apache.naming.SelectorContext.lookup(SelectorContext.java:137)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at
org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)
        at
org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137)
        at
org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29)
        at
org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:89)
        at
org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)
        at
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325)
        at
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
        at
org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
        at
org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
        at
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
....



Does anybody know what I am doing wrong? Is there any way to check
which
resources Tomcat makes avaiable? I am having a really hard time
understanding what I am doing wrong.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org






---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to