I'm trying to understand a problem I'm having with Tomcat Native since moving from 1.2.x to 2.0.
For several years I have been running Tomcat 9.0.12 in Eclipse and 9.0.37 for localhost on my home and office Mac Mini's with macOS 10.15.7 Catalina. Both use OpenJDK 8 from Amazon. To support development I have a self-signed certificate and until recently used Tomcat Native 1.2.x installed with Homebrew. I added `CATALINA_OPTS="-Xmx1024m -Djava.library.path=/usr/local/opt/tomcat-native/lib"` to my bin/setevn.sh With this configuration I was able to the connector org.apache.coyote.http11.Http11AprProtocol with UpgradeProtocol for org.apache.coyote.http2.Http2Protocol Recently Homebrew replaced Tomcat Native 1.2.x with 2.0.1. Since then when Tomcat starts I see in catalina.out "The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [/usr/local/opt/tomcat-native/lib]". I've had to switch my development to connector org.apache.coyote.http11.Http11NioProtocol (I need SSL for my client-server setup). I've tried using a Tomcat Native 2 I built myself, but get the same "not found on the java.library.path" message. I tried using a Tomcat Native 1.2.35 I built myself but got the following stacktrace in catalina.out 23-Aug-2022 03:07:29.541 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.2.35] using APR version [1.7.0]. 23-Aug-2022 03:07:29.541 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. 23-Aug-2022 03:07:29.541 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true] 23-Aug-2022 03:07:29.544 SEVERE [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Failed to initialize the SSLEngine. org.apache.tomcat.jni.Error: 70023: This function has not been implemented on this platform at org.apache.tomcat.jni.SSL.initialize(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.core.AprLifecycleListener.initializeSSL(AprLifecycleListener.java:289) at org.apache.catalina.core.AprLifecycleListener.lifecycleEvent(AprLifecycleListener.java:136) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:135) at org.apache.catalina.startup.Catalina.load(Catalina.java:690) at org.apache.catalina.startup.Catalina.load(Catalina.java:712) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:302) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:472) What is the issue I'm seeing and how might it be corrected if I want to run Tomcat Native for the APR protocol? BTW, this is not critical to me; I can live with NIO. However I'm the *only* person on this team who pays any attention to Tomcat, and I may be having to explain this to my coworkers and our boss. Others use a mix of Linux, Windows, and Mac. Most don't use SSL internally but some use the AJP connector for Apache, and IIRC that needs Tomcat Native, too. -- "Hell hath no limits, nor is circumscrib'd In one self-place; but where we are is hell, And where hell is, there must we ever be" --Christopher Marlowe, *Doctor Faustus* (v. 111-13)