当前位置: 首页 > 知识库问答 >
问题:

APR在生产环境中实现最佳性能

夏景同
2023-03-14

我正在docker容器中安装java应用程序。它运行正常,但我在日志中不断发现这个错误:

信息1---[ost-startStop-1]o.a.catalina。果心AprLifecycleListener:java上没有基于APR的Apache Tomcat本机库,该库允许在生产环境中实现最佳性能。图书馆路径:[/usr/java/packages/lib/amd64:/usr/lib/x86\u 64-linux-gnu/jni:/lib/x86\u 64-linux-gnu:/usr/lib/x86\u 64-linux-gnu:/usr/lib/jni:/lib:/usr/lib]

所以,我试图通过遵循this和this来安装这个APR包,并通过在我的dockerfile中添加这一行来安装tomcat本机:

运行apt get install-y libtcnative-1

但是,当添加此行时,我在日志中收到以下消息:

错误1---[ost-start Stop-1]o.a.catalina.core.AprLifeycleListener:安装了基于APR的Apache Tomcat Native库的不兼容版本[1.1.33],而Tomcat需要版本[1.2.14]

我尝试安装:

apt-get install-y openjdk-8-jdk libapr1-dev

apt get安装-y openjdk-8-jdk libtcnative-1 libapr1 dev

但是这些都不起作用...我一直收到同样的消息。

我还尝试按照这里的第一个答案从源代码安装,但这也不起作用。

以下是我的dockerfile文件的其余部分:

FROM ubuntu:16.04

RUN apt-get update \
 && apt-get install -y software-properties-common python-software-properties \
 && add-apt-repository ppa:mozillateam/ppa \
 && apt-get update \
 && apt-get install -y firefox firefox-esr

RUN apt-get install -y libtcnative-1 openjdk-8-jdk 

任何帮助是感激。谢谢!

共有1个答案

刘永望
2023-03-14

如果有人仍然感兴趣,以下是我所做的:

  1. 从Apache下载最新的apr和tcnative,并将归档文件解压缩到Dockerfile所在的目录中
    FROM adoptopenjdk/openjdk11:jdk-11.0.1.13 AS build
    ADD apr-1.7.0 $HOME/apr-1.7.0
    ADD tcnative $HOME/tcnative
    ARG DEBIAN_FRONTEND=noninteractive    
    RUN apt-get update -y && \
        apt-get -y upgrade && \
        apt-get install -y build-essential libssl-dev
    WORKDIR $HOME/apr-1.7.0
    RUN ./configure && make && make install

    WORKDIR $HOME/tcnative
    RUN ./configure --with-apr=/usr/local/apr/bin/apr-1-config  --with-java-home=$JAVA_HOME  --with-ssl=$HOME/OPENSSL --prefix=/usr/local/apr
    RUN make && make install
    FROM adoptopenjdk/openjdk11:jre-11.0.10_9
    ARG DEBIAN_FRONTEND=noninteractive
    RUN apt-get update -y && \
        apt-get -y upgrade && \
        apt-get install -y --no-install-recommends libssl-dev x11-apps && \
        apt-get clean && \
        apt-get autoremove -y --purge && \
            rm -rf /var/lib/apt/lists/*    
    COPY --from=build /usr/local/apr /usr/local/apr

当您调用java来运行jar时,请设置库路径:

入口点[“java”,“-Djava.library.path=/usr/local/apr/lib”,“-jar”,“app.jar”]

应用程序现在启动并报告正确的库:

org.apache.catalina.core.AprLifecycleListener - Loaded Apache Tomcat Native library [1.2.31] using APR version [1.7.0].
 类似资料:
  • HTTP状态404-/ 类型状态报告 消息/ Apache Tomcat/7.0.75 Tomcat Catalina日志和服务器日志都有以下错误: 在java.library.path:/users/luowensheng/library/java/extensions:/library/java/extensions:/network/library/java/extensions:/syst

  • “在LocalHost上启动Tomcat V7.0服务器”遇到问题。 提前道谢。

  • 生产中的EAP EAP在默认的FreeRADIUS安装中开箱即用。但是,也有一些要点需要注意或更改以适应您的环境。在本节中,我们将介绍以下几点: 适当的公钥基础设施(PKI)的重要性 配置内部隧道虚拟服务器 内部和外部隧道识别的问题 禁用未使用的EAP方法 公共密钥基础设施简介公钥基础结构主要用于两件事: 验证某人的身份 通过不安全的连接交换安全数据 为了确保某人是他们声称的人,我们使用证书颁发机

  • 更新时间:2019-08-31 11:22:33 服务分为生产环境与开发环境,未发布的服务认为是在开发环境,发布后的服务为生产环境的服务。生产环境的服务才可以在web工作台,或代码工程内调用。生产环境的服务不可再进行修改,需要在开发环境中修改部署发布服务后,才可生效。 服务运维监控功能是为生产环境的服务提供的,您可以在此查看生产环境服务的调用量及运行日志。

  • 本文向大家介绍详解Django+Uwsgi+Nginx 实现生产环境部署,包括了详解Django+Uwsgi+Nginx 实现生产环境部署的使用技巧和注意事项,需要的朋友参考一下 uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。 要注意 WSGI / uwsgi / uWS

  • 生产环境打包要做两件事: 压缩应用代码; 使用 Vue.js 指南中描述的部署方式去除 Vue.js 中的警告。 下面是配置示例: // webpack.config.js module.exports = { // ... other options plugins: [ // short-circuits all Vue.js warning code new webp