Настройка APR для Tomcat 5.5.25
Устанавливаем APR http://apr.apache.org/
Скачиваем последнюю версию со страницы http://apr.apache.org/download.cgi
Затем компилируем и устанавливаем:
./configure && make && make install
По умолчанию APR устанавливается в /usr/local/apr
Установка APR-util
Исходники находятся там же где и APR (http://apr.apache.org/download.cgi)
./configure --with-apr=/usr/local/apr/ && make && make install
Установка Tomcat-native
Разворачиваем файл tomcat-native.tgz (Из каталога /tomcat/bin/)
в нём выполняем:
./configure --with-apr=/usr/local/apr/ -with-java-home=/usr/local/jdk16
make
make install
Запуск Tomcat
После всего исправляем в catalina.sh:
CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"
И перезапускаем tomcat. Отныне томкат работает через низкоуровневые интерфейсы (т.е. быстрее) и в логе нет противного сообщения ;) )
PS: В итоге возникла ошибка при приёме пост-запросов. Замечено было при отправке средних файлов ( ~100kb) на сервер посредством http. Статистика пока набирается, но apr пришлось отключить.
Ссылки по теме ошибки:
http://www.velocityreviews.com/forums/t524769-tomcat-exception-thrown-whilst-processing-posted-parameters.html
и
issues.apache.org/bugzilla/show_bug.cgi?id=40960
Ошибка:
java.io.IOException: Socket read failed
at org.apache.coyote.ajp.AjpAprProcessor.read(AjpAprProcessor.java:1037)
at org.apache.coyote.ajp.AjpAprProcessor.readMessage(AjpAprProcessor.java:1158)
at org.apache.coyote.ajp.AjpAprProcessor.receive(AjpAprProcessor.java:1090)
at org.apache.coyote.ajp.AjpAprProcessor$SocketInputBuffer.doRead(AjpAprProcessor.java:1228)
at org.apache.coyote.Request.doRead(Request.java:419)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:265)
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:370)
at org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:274)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:105)
at javax.servlet.ServletInputStream.readLine(ServletInputStream.java:94)
at org.apache.catalina.connector.CoyoteInputStream.readLine(CoyoteInputStream.java:199)
at AM.servlet.util.MultipartInputStreamHandler.readLine(MultipartRequest
.java:628)
Скачиваем последнюю версию со страницы http://apr.apache.org/download.cgi
Затем компилируем и устанавливаем:
./configure && make && make install
По умолчанию APR устанавливается в /usr/local/apr
Установка APR-util
Исходники находятся там же где и APR (http://apr.apache.org/download.cgi)
./configure --with-apr=/usr/local/apr/ && make && make install
Установка Tomcat-native
Разворачиваем файл tomcat-native.tgz (Из каталога /tomcat/bin/)
в нём выполняем:
./configure --with-apr=/usr/local/apr/ -with-java-home=/usr/local/jdk16
make
make install
Запуск Tomcat
После всего исправляем в catalina.sh:
CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"
И перезапускаем tomcat. Отныне томкат работает через низкоуровневые интерфейсы (т.е. быстрее) и в логе нет противного сообщения ;) )
PS: В итоге возникла ошибка при приёме пост-запросов. Замечено было при отправке средних файлов ( ~100kb) на сервер посредством http. Статистика пока набирается, но apr пришлось отключить.
Ссылки по теме ошибки:
http://www.velocityreviews.com/forums/t524769-tomcat-exception-thrown-whilst-processing-posted-parameters.html
и
issues.apache.org/bugzilla/show_bug.cgi?id=40960
Ошибка:
java.io.IOException: Socket read failed
at org.apache.coyote.ajp.AjpAprProcessor.read(AjpAprProcessor.java:1037)
at org.apache.coyote.ajp.AjpAprProcessor.readMessage(AjpAprProcessor.java:1158)
at org.apache.coyote.ajp.AjpAprProcessor.receive(AjpAprProcessor.java:1090)
at org.apache.coyote.ajp.AjpAprProcessor$SocketInputBuffer.doRead(AjpAprProcessor.java:1228)
at org.apache.coyote.Request.doRead(Request.java:419)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:265)
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:370)
at org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:274)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:105)
at javax.servlet.ServletInputStream.readLine(ServletInputStream.java:94)
at org.apache.catalina.connector.CoyoteInputStream.readLine(CoyoteInputStream.java:199)
at AM.servlet.util.MultipartInputStreamHandler.readLine(MultipartRequest
.java:628)