On Jul 23, 2007, at 10:54 AM, Dain Sundstrom wrote:
On Jul 23, 2007, at 9:40 AM, Ueberbach, Michael wrote:
Hello,
meanwhile I got along a bit further in deploying and using an EJB
3.0 application on g2 (M6). But there still remain some open
questions:
<snip>
3. The most important and irritating problem is the following:
After starting the database and then geronimo the first access
to persistent data by an ejb method results in the following
exception:
ERROR [OpenEJB] The bean instances business method encountered a
system exception: Access denied for user 'geronimo'@'localhost' to
database 'GERONIMO_DB'
<1.0.0-SNAPSHOT-SNAPSHOT nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: Access denied
for user 'geronimo'@'localhost' to database 'GERONIMO_DB'
The access is denied because the name of the database is
geronimo_db (lower cases) and MySQL on linux works case-sensitive.
But the correct writing
of the name has been used when deploying the database pool.
What is most astonishing is the following!!!
After stopping the database the attempt to get access to data
results in
[MCFConnectionInterceptor] Error occurred creating
ManagedConnection for
[EMAIL PROTECTED]
javax.resource.spi.ResourceAllocationException: Unable to obtain
physical connection to jdbc:mysql://localhost:3306/geronimo_db
at org.tranql.connector.jdbc.JDBCDriverMCF.getPhysicalConnection
(JDBCDriverMCF.java:98)
This is clear and expectable. But ...
after starting the database again: Everything works!
I can reproduce the whole thing. Conclusion at the moment is: To
get a working connection to the database I have to force the above
error situation first. Very strange!
May someone has an idea about this behaviour?
This is something we should be able to help you with.
Unfortunately, I this isn't my area, but hopefully David Jencks
will respond quickly :)
This is pretty bizarre :-)
Could you show your plans for setting up the mysql datasource(s) and
the persistence.xml you are using?
Also, I'm not sure about the sequence of all the steps involved....
what is creating the tables in the db? A script? openjpa? Something
else? If a script, how is it run?
For instance I wonder if steps like this would make any difference:
- if you are using a script:
start db
create tables
stop db
start db
start geronimo (or deploy/start your datasource + application)
If you are letting openjpa create your tables, do you have a non-jta-
datasource specified? I could not get derby to work with openjpa
without a non-jta-datasource. I stopped investigating why after a
lot of frustration, but one symptom was that a connection that had
been used outside a jta transaction to execute ddl or updating the
sequence table appeared to lose track of the schema it was supposed
to be using by default. So I suggest adding a non-jta-datasource if
you don't have one.
thanks
david jencks
-dain