On Tue, Aug 23, 2022 at 10:18 AM Mark Thomas <ma...@apache.org> wrote:

> On 23/08/2022 14:12, Thad Humphries wrote:
> > 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?
>
> You can't.
>
> The APR connector has been deprecated and has been removed in Tomcat
> 10.1.x onwards.
>
> Tomcat Native 2.0.x does not support the APR connectors.
>
> You need to switch to NIO or NIO2. If you want to use OpenSSL for TLS
> then you can do so (you'll need Tomcat Native 2.0.x and OpenSSL). Look
> at the docs for the sslImplementationName attribute.
>
> > 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.
>
> AJP does not require APR/Native. There are NIO and NIO2 implementations
> for AJP.
>
> Mark
>

Thank you, Mark. That all makes sense. I'll look at the docs you've
referenced. I recall once watching some YouTube videos on Tomcat
connectors. I'll find and rewatch those, 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)

Reply via email to