Jens Arnold - 2023-03-05

Hi,

I try to use UCanAccess in my Tomcat software.

I use:

Eclips IDE Version: 2022-12 (4.26.0)
jre-8u361-windows-x64
apache-tomcat-10.1.6
an Access2000 DB

ucanaccess-5.0.1.jar
jackcess-3.0.1.jar
hsqldb-2.5.0.jar
commons-lang3-3.8.1.jar
jackcess-encrypt3.0.1.jar

I run this code:

Connection con_test;
    try
    {
        Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
        String DATABASE_URL =
"jdbc:ucanaccess://C:/Users/Myself/eclipse-workspace/Testit/DB/TestDB.mdb";
        System.out.println(DATABASE_URL);
        con_test = DriverManager.getConnection( DATABASE_URL );
        System.out.println("OK.");
    }
    catch (Exception ex)
    {
        System.out.println(
"#####################################################################" );
        System.out.println( "Class: " + ex.getStackTrace()[0].getClass());
        System.out.println( "File Name: " +
ex.getStackTrace()[0].getFileName());
        System.out.println( "Line Number: " +
ex.getStackTrace()[0].getLineNumber());
        System.out.println( "Method Name: " +
ex.getStackTrace()[0].getMethodName());
        System.out.println( "Class Name: " +
ex.getStackTrace()[0].getClassName());
        System.out.println(ex.toString());
        ex.printStackTrace();
        ex.getStackTrace()[0].getClass();
        System.out.println(
"#####################################################################" );

}

In my catalina.policy I already have;

grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
    .....
        permission java.util.logging.LoggingPermission "control";
    .....

}

and I get this issue

Class: class java.lang.StackTraceElement
File Name: UcanaccessDriver.java
Line Number: 231
Method Name: connect
Class Name: net.ucanaccess.jdbc.UcanaccessDriver
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::5.0.1 access denied
("java.util.logging.LoggingPermission" "control")
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::5.0.1 access denied
("java.util.logging.LoggingPermission" "control")
    at
net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:231)
    at
java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681)
    at
java.sql/java.sql.DriverManager.getConnection(DriverManager.java:252)
    at Login.LogInDB(Login.java:110)
    at Main.Main_Start(Main.java:90)
    at Index.doGet(Index.java:22)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:537)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:631)
    at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
    at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at
org.apache.catalina.security.SecurityUtil.lambda$execute$0(SecurityUtil.java:281)
    at
java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
    at
java.base/javax.security.auth.Subject.doAsPrivileged(Subject.java:584)
    at
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:312)
    at
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:171)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:203)
    at
org.apache.catalina.core.ApplicationFilterChain.lambda$doFilter$0(ApplicationFilterChain.java:133)
    at
java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:132)
    at
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
    at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at
org.apache.catalina.security.SecurityUtil.lambda$execute$0(SecurityUtil.java:281)
    at
java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
    at
java.base/javax.security.auth.Subject.doAsPrivileged(Subject.java:584)
    at
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:312)
    at
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:254)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:172)
    at
org.apache.catalina.core.ApplicationFilterChain.lambda$doFilter$0(ApplicationFilterChain.java:133)
    at
java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:132)
    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166)
    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
    at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
    at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
    at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
    at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:676)
    at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
    at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400)
    at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
    at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894)
    at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
    at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
    at
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    at
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.security.AccessControlException: access denied
("java.util.logging.LoggingPermission" "control")
    at
java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:485)
    at
java.base/java.security.AccessController.checkPermission(AccessController.java:1068)
    at
java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:416)
    at
java.logging/java.util.logging.LogManager.checkPermission(LogManager.java:2440)
    at
java.logging/java.util.logging.Logger.checkPermission(Logger.java:622)
    at java.logging/java.util.logging.Logger.setLevel(Logger.java:2002)
    at net.ucanaccess.util.Logger.turnOffJackcessLog(Logger.java:55)
    at net.ucanaccess.jdbc.DBReference.<init>(DBReference.java:166)
    at
net.ucanaccess.jdbc.DBReferenceSingleton.loadReference(DBReferenceSingleton.java:51)
    at
net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:91)
    ... 51 more</init>