-1

I know this is a duplicate question, but none of the other 15+ thread's answers helped, or i missed something.

I am trying to implement authentication using JDBC Realm in my JAX-WS java web app, and i can't even get past connecting to the db.

This is what i tried:

Enviromental variables:

Using:

  • apache-tomee-plus-1.7.4

  • jre1.8.0_161

  • jdk1.8.0_144

Actual trace:

Apr 13, 2018 9:07:49 PM org.apache.catalina.realm.JDBCRealm getPassword
SEVERE: Exception performing authentication
java.sql.SQLException: com.mysql.jdbc.Driver
    at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:692)
    at org.apache.catalina.realm.JDBCRealm.getPassword(JDBCRealm.java:544)
    at org.apache.catalina.realm.RealmBase.getDigest(RealmBase.java:1266)
    at org.apache.catalina.realm.RealmBase.authenticate(RealmBase.java:420)
    at org.apache.catalina.realm.CombinedRealm.authenticate(CombinedRealm.java:111)
    at org.apache.tomee.catalina.TomEERealm.authenticate(TomEERealm.java:55)
    at org.apache.catalina.authenticator.DigestAuthenticator$DigestInfo.authenticate(DigestAuthenticator.java:708)
    at org.apache.catalina.authenticator.DigestAuthenticator.authenticate(DigestAuthenticator.java:275)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:577)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:688)
    ... 20 more
Marko Krizan
  • 63
  • 3
  • 9
  • Did you check https://stackoverflow.com/a/38914543/2849346 - By declaring a `DataSource`, TomEE will load the MySQL JDBC driver early (on startup) assuming that you have put the mysql-connector.jar in `$CATALINA-HOME/lib` of the server. Later calls - such as the authenticate call - should then work as the driver is now loaded already by the container environment. If this helped, please let me know I will then get an appropriate answer out for your case/question. – MWiesner Apr 14 '18 at 08:32
  • @MWiesner No luck. Should i reference resource id somewhere? – Marko Krizan Apr 14 '18 at 19:14
  • How are you declaring your realm? is it a JaasRealm or a DataSourceRealm? – MitchBroadhead Apr 15 '18 at 09:04

1 Answers1

1

As ashamed as i am, I have to admit that i used a wrong version of tomEE i had on my PC, that wasn't even connected to eclipse, but i was sure it was the right one, until i checked the actual path from eclipse.

Anyway, as JDBC Realm goes, as many other threads' answers suggested, the DBMS connector .jar needs to be in the servers lib directory ($CATALINA-HOME/lib).

Marko Krizan
  • 63
  • 3
  • 9