回答:
「APRベースのApache Tomcatネイティブライブラリが本番環境で最適なパフォーマンスを可能にするjava.library.pathに見つかりませんでした」
参照されるライブラリは、JNIを介してロードされるOS固有のdll(tcnative-1.dll)にバンドルされています。Tomcatは、Javaランタイムでは提供されていないOS機能(sendfile、epoll、OpenSSL、システムステータスなど)を使用できます。Tomcatはそれがなくても問題なく動作しますが、一部のユースケースでは、ネイティブライブラリを使用するとより高速になります。
本当に必要な場合は、tcnative-1.dll
(またはlibtcnative.so
Linuxの場合)をダウンロードしてbinフォルダーに配置し、EclipseでTomcatサーバーの起動構成にシステムプロパティを追加します。
-Djava.library.path=c:\dev\tomcat\bin
本番サーバーを実行している場合を除き、このメッセージについて心配する必要はありません。これは、パフォーマンスを向上させるために使用されるライブラリーです(実動システム上)。Apacheのポータブルランタイム(APR)Tomcatのネイティブライブラリをベース:
TomcatはApache Portable Runtimeを使用して、優れたスケーラビリティ、パフォーマンス、およびネイティブサーバーテクノロジーとのより良い統合を提供できます。Apache Portable Runtimeは、Apache HTTP Server 2.xの中核となる移植性の高いライブラリです。APRには、高度なIO機能(sendfile、epoll、OpenSSLなど)、OSレベルの機能(乱数生成、システムステータスなど)、ネイティブプロセス処理(共有メモリ、NTパイプ、Unixソケット)へのアクセスなど、多くの用途があります。
RHEL Linuxでは、次のように発行します。
yum install tomcat-native.x86_64
/注:アーキテクチャによっては、64ビットまたは32ビットパッケージの拡張子が異なる場合があります/
以上です。その後、ログファイルに次の情報メッセージが表示されます。
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
すべての操作が以前よりも著しく速くなります。
yum install tomcat-native
これを修正しました
Ubuntuサーバーへのネイティブライブラリのインストール:
sudo apt-get install libtcnative-1
それが機能しない場合は、Tomcatネイティブをインストールする必要があります
Oracle java7をインストールします。
tomcat aprをインストールします。
tomcat tomcat-nativeをインストールします。
私はこれを経験し、次のように構成しました:
Ubuntu 16.04
Tomcat 8.5.9
Apache2.4.25
APR 1.5.2
Tomcatネイティブ1.2.10
Java 8
これらは、ここの古い投稿に基づいて私が使用した手順です:
sudo apt-get update
sudo apt-get install libtcnative-1
sudo apt-get install make
sudo apt-get install gcc
sudo apt-get install openssl
sudo apt-get install libssl-dev
cd /opt/tomcat/bin
sudo wget http://apache.mirror.anlx.net//apr/apr-1.5.2.tar.gz
sudo tar -xzvf apr-1.5.2.tar.gz
cd apr-1.5.2
sudo ./configure
sudo make
sudo make install
cd /usr/local/apr/lib/
ls
libapr-1.la
cd /opt/tomcat/bin
sudo wget https://archive.apache.org/dist/tomcat/tomcat-connectors/native/1.2.10/source/tomcat-native-1.2.10-src.tar.gz
sudo tar -xzvf tomcat-native-1.2.10-src.tar.gz
cd tomcat-native-1.2.10-src/native
sudo pico ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
source ~/.bashrc
sudo ./configure --with-apr=/usr/local/apr --with-java-home=$JAVA_HOME
sudo make
sudo make install
sudo pico /opt/tomcat/bin/setenv.sh
export LD_LIBRARY_PATH='$LD_LIBRARY_PATH:/usr/local/apr/lib'
sudo service tomcat restart
.rodata' can not be used when making a shared object; recompile with -fPIC /usr/local/ssl/lib/libssl.a: error adding symbols: Bad value collect2: error: ld returned 1 exit status make[1]: *** [libtcnative-1.la] Error 1
この問題もありました。あなたがいる場合行うライブラリを持っているが、それでもこのエラーを持っている、それは、構成エラーの可能性があります。あなたは、server.xml
次の行が欠落することができます。
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
(または、コメント化されている場合があります)。これは<Listener>
、他のリスナーと同様に、トップレベルの子です<Server>
。
この<Listener>
行がない場合、APRライブラリをロードする試みはないためLD_LIBRARY_PATH
、-Djava.library.path=
設定は無視されます。
Mac OS Xの場合:
$ brew install tomcat-native
==> tomcat-native
In order for tomcat's APR lifecycle listener to find this library, you'll
need to add it to java.library.path. This can be done by adding this line
to $CATALINA_HOME/bin/setenv.sh
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/opt/tomcat-native/lib"
If $CATALINA_HOME/bin/setenv.sh doesn't exist, create it and make it executable.
次に、それをEclipseのtomcat引数に追加します([サーバー]> [起動構成を開く ]> [引数]タブ> [ VM引数]をダブルクリックします)。
-Djava.library.path=/usr/local/opt/tomcat-native/lib
Java 8から11にアップグレードするときにこの問題が発生しました。この依存関係を追加した後、私のアプリは問題なく起動しました:
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.25.0-GA</version>
</dependency>