Java 8 and Tomcat 8 after update VPS
At start Tomcat freeze on:
org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory xxxxx/apache-tomcat-8.0.26/webapps/manager
Only after several minutes, Tomcat starts accepting requests.
Make this change
export CATALINA_OPTS="-Djava.security.egd=file:/dev/./urandom"
Показаны сообщения с ярлыком Java. Показать все сообщения
Показаны сообщения с ярлыком Java. Показать все сообщения
пятница, 28 августа 2015 г.
вторник, 11 февраля 2014 г.
Jetty и "java.io.IOException: Cannot read file: modules/npn/npn-1.7.0_51.mod"
Если при запуске jetty получаем ошибку вида java.io.IOException: Cannot read file: modules/npn/npn-1.7.0_хх.mod, где хх - номер версии, то значит разработчики jetty не смогли догнать разработчиков java. По сути надо зайти в каталог modules/npn/ и скопировать последнюю имеющуюся версию npn-1.7.0_yy.mod - где yy - максимальная версия в каталоге
Т.е. для текущего момента (02.2014) команда следующая
cd /path/to/jetty/modules/npn
cp npn-1.7.0_45.mod npn-1.7.0_51.mod
После этого запуск проходит без проблем.
Т.е. для текущего момента (02.2014) команда следующая
cd /path/to/jetty/modules/npn
cp npn-1.7.0_45.mod npn-1.7.0_51.mod
После этого запуск проходит без проблем.
пятница, 19 октября 2012 г.
Debian + Java + usb + hid
Собственно сама "обертка"-wrapper http://code.google.com/p/javahidapi/
Можно скачать binary пакет.
hg clone https://code.google.com/p/javahidapi/
Для сборки по их инструкции понадобились дополнительные пакеты:
aptitude install libusb++-dev libusb-dev java-gcj-compat-dev libudev-devel libusb-1.0-0-dev
Готовую библиотеку необходимо скопировать из lib/native/linux/ в /lib и /lib32:
cp ./lib/native/linux/libhidapi-jni-64.so /lib/libhidapi-jni.so
cp ./lib/native/linux/libhidapi-jni-32.so /lib32/libhidapi-jni.so
Что бы запустить пример как указано в инструкции ("ant run"), необходимо отредактировать 78 строку файла build.xml --- <jvmarg value="-Djava.library.path=${basedir}/mac"/>
Можно скачать binary пакет.
Можно скачать исходники и скомпилировать их по инструкции (осторожно, присутствуют синтаксические ошибки вида "make C linux", очевидно, что требуется "make -C linux").
Понадобится пакет mercurial если его еще нет.hg clone https://code.google.com/p/javahidapi/
Для сборки по их инструкции понадобились дополнительные пакеты:
aptitude install libusb++-dev libusb-dev java-gcj-compat-dev libudev-devel libusb-1.0-0-dev
Готовую библиотеку необходимо скопировать из lib/native/linux/ в /lib и /lib32:
cp ./lib/native/linux/libhidapi-jni-64.so /lib/libhidapi-jni.so
Что бы запустить пример как указано в инструкции ("ant run"), необходимо отредактировать 78 строку файла build.xml --- <jvmarg value="-Djava.library.path=${basedir}/mac"/>
т.е. пример жестко забит на использование "mac", а нам нужен "linux"
противном случае получаем при запуске ошибки вида:
[java] Exception in thread "main" java.lang.UnsatisfiedLinkError: no hidapi-jni in java.library.path
среда, 17 октября 2012 г.
Debian + Java + usb
Взято тут http://www.libusb.org/
Сама библиотека http://sourceforge.net/projects/libusbjava/
Описание по установке http://libusbjava.sourceforge.net/wp/?page_id=8
Нужна LibusbJava - есть два варианта - либо ставим из sid пакет libusb-java-lib либо собираем сами. Для сборки понадобятся сами исходиники
(если нет svn - aptitude install subversion)
и пакеты:
aptitude install libusb++-dev libusb-dev java-gcj-compat-dev
Затем в каталоге LibusbJava выполняем:
ant linux
и созданный файл libusbJava.so.0.2.4.0 копируем в /usr/lib, а так же делаем симлинк
ln -s /usr/lib/libusbJava.so.0.2.4.0 /usr/lib/libusbJava.so
суббота, 22 сентября 2012 г.
java 1.7 и Slackware 13
Пришла пора обновлять версию java.
Качаем с http://www.oracle.com/technetwork/java/javase/downloads/index.html
свежую версию JRE.
В моем случае это был файл jre-7u7-linux-i586.tar.gz
Распаковываем его и копируем каталог jre1.7.0_07
в /usr/lib
Затем меняем (если там нет, то добавляем) в /etc/profile
export JAVA_HOME=/usr/lib/jre1.7.0_07/
export PATH=$JAVA_HOME/bin:$PATH
и проверяем вызов версии
$java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) Server VM (build 23.3-b01, mixed mode)
понедельник, 20 августа 2012 г.
Chrome и java
Если не запускаются java аплеты, необходимо чуть донастроить хром
mkdir /opt/google/chrome/plugins
cd /opt/google/chrome/plugins
ln -s _путь_где_у_Вас_jre/lib/_архитектура_процессора_/libnpjp2.so .
Хром должен сам подхватить плагин.
mkdir /opt/google/chrome/plugins
cd /opt/google/chrome/plugins
ln -s _путь_где_у_Вас_jre/lib/_архитектура_процессора_/libnpjp2.so .
Хром должен сам подхватить плагин.
понедельник, 23 июля 2012 г.
Glassfish и предупреждение Unable to set request character encoding to UTF-8
Если в логах Glassfish появляются строки вида:
WARNING: PWC4011: Unable to set request character encoding to UTF-8 from context /_приложение_ because request parameters have already been read, or ServletRequest.getReader() has already been called
То нужно явно указать кодировку utf-8 в glassfish-web.xml
<parameter-encoding default-charset="UTF-8">
</parameter-encoding>
WARNING: PWC4011: Unable to set request character encoding to UTF-8 from context /_приложение_ because request parameters have already been read, or ServletRequest.getReader() has already been called
То нужно явно указать кодировку utf-8 в glassfish-web.xml
<parameter-encoding default-charset="UTF-8">
</parameter-encoding>
ICEFaces и окошко User Session Expired
При использовании ajax получаем вплывающее окно
========================
User Session Expired
To reconnect click the Reload button on the
browser or click the button below
Reload
========================
При этом в логах Glassfish отмечается строка вида:
WARNING: queued exception
javax.faces.application.ViewExpiredException: viewId:/index.xhtml - View /index.xhtml could not be restored.
Одна из причин подобного поведения - использования базовой авторизации. AJAX запросы не отправляют информацию об авторизации.
Как одно из решений данной проблемы - использовать следующий код в web.xml
<context-param>
<param-name>com.sun.faces.enableRestoreView11Compatibility</param-
name> <param-value>true</param-value>
</context-param>
Это заставит работать в режиме совместимости с JSF1.1
Можно "подавить" вывод этого окошка кодом:
<context-param>
<param-name>org.icefaces.disableDefaultErrorPopups</param-name>
<param-value>true</param-value>
</context-param>
========================
User Session Expired
To reconnect click the Reload button on the
browser or click the button below
Reload
========================
При этом в логах Glassfish отмечается строка вида:
WARNING: queued exception
javax.faces.application.ViewExpiredException: viewId:/index.xhtml - View /index.xhtml could not be restored.
Одна из причин подобного поведения - использования базовой авторизации. AJAX запросы не отправляют информацию об авторизации.
Как одно из решений данной проблемы - использовать следующий код в web.xml
<context-param>
<param-name>com.sun.faces.enableRestoreView11Compatibility</param-
name> <param-value>true</param-value>
</context-param>
Это заставит работать в режиме совместимости с JSF1.1
Можно "подавить" вывод этого окошка кодом:
<context-param>
<param-name>org.icefaces.disableDefaultErrorPopups</param-name>
<param-value>true</param-value>
</context-param>
четверг, 19 июля 2012 г.
Java + Mysql + utf8 = вопросы вместо русских букв (??????)
Если при записи в базу получаем вместо русских букв знаки вопроса, добавляем в параметры подключение к JDBC
useUnicode=true
characterEncoding=utf8
Т.е. урл для подключения к базе должен представлять вид - jdbc:mysql://hostname:port/database?useUnicode=true&characterEncoding=utf8
и не лишним будет сразу после подключения к базе выполнить два "запроса"
stat.execute("set character set utf8");
stat.execute("set names utf8");
useUnicode=true
characterEncoding=utf8
Т.е. урл для подключения к базе должен представлять вид - jdbc:mysql://hostname:port/database?useUnicode=true&characterEncoding=utf8
и не лишним будет сразу после подключения к базе выполнить два "запроса"
stat.execute("set character set utf8");
stat.execute("set names utf8");
воскресенье, 25 марта 2012 г.
Java + Mysql
Драйвер JDBC для mysql качаем отсюда: http://dev.mysql.com/downloads/connector/j/
Далее в проекте в каталоге src создаем каталог lib и туда из архива с драйвером копируем
mysql-connector-java-x.x.xx-bin.jar (либо через импорт)
Затем надо подключить jar в classpath - самая обширная инструкция есть тут http://www.vogella.de/articles/Eclipse/article.html#classpath
В кратце - идем: (проект) Properties -> Java Build Path -> (вкладка) Libraries -> (кнопка) Add JARs, находим наш проект и каталог lib в нем mysql-connector-java-x.x.xx-bin.jar и Ок.
Примеров кода полно в инете, к примеру http://www.vogella.de/articles/MySQLJava/article.html
Из основного:
ну и забыть про try + catch не даст компилятор.
Далее в проекте в каталоге src создаем каталог lib и туда из архива с драйвером копируем
mysql-connector-java-x.x.xx-bin.jar (либо через импорт)
Затем надо подключить jar в classpath - самая обширная инструкция есть тут http://www.vogella.de/articles/Eclipse/article.html#classpath
В кратце - идем: (проект) Properties -> Java Build Path -> (вкладка) Libraries -> (кнопка) Add JARs, находим наш проект и каталог lib в нем mysql-connector-java-x.x.xx-bin.jar и Ок.
Примеров кода полно в инете, к примеру http://www.vogella.de/articles/MySQLJava/article.html
Из основного:
Class.forName("com.mysql.jdbc.Driver");
connect = DriverManager.getConnection("jdbc:mysql://localhost/?"
+ "user=sqluser&password=sqluserpw");
statement = connect.createStatement();
resultSet = statement.executeQuery("select * from ....");
while (resultSet.next()) {
...
String user = resultSet.getString("myuser");
Date date = resultSet.getDate("datum");
...
}
ну и забыть про try + catch не даст компилятор.
понедельник, 13 февраля 2012 г.
Debian и установка Tomcat
Качаем свежую версию http://tomcat.apache.org/
apache-tomcat-7.0.25
распаковываем в /opt и делаем симлинк на /opt/apache-tomcat
Создать пользователя tomcat
adduser --system tomcat
Меняем владельца каталога /opt/apache-tomcat пользователя tomcat:
Debian -- chown -RLv tomcat:nogroup /opt/apache-tomcat
Centos -- chown -RLv tomcat:tomcat /opt/apache-tomcat
** Тестовый запуск
sudo -u tomcat /opt/apache-tomcat/bin/catalina.sh run
** в браузер по адресу http://имя_сервера:8080 должна открыться стартовая страница tomcat.
** если нужно запускать на портах ниже 1024, к примеру на стандартном 80 для http, необходимо установить утилиту jsvc
jsvc - предназначена для запуска java-программы как сервиса(демона) операционной системы.
донастроим конфиг /opt/apache-tomcat/conf/server.xml
следующий текст:
заменим порт для http - 80, и указываем кодировку для URI:
в /etc/init.d/tomcat помещаем текст скрипта для запуска (подредактировать под свое, если что не так. обратите внимание на JAVA_HOME!!! Возможно понадобится указать полный путь к jsvc)
#=======================================================
#!/bin/sh
JAVA_HOME=/usr/lib/jvm/java-6-sun
CATALINA_HOME=/opt/apache-tomcat
TOMCAT_USER=tomcat
TMP_DIR=/var/tmp
PID_FILE=/var/run/apache-tomcat.pid
CATALINA_BASE=/opt/apache-tomcat
CATALINA_OPTS="-Xmx1024m -Xms512m -XX:MaxPermSize=128m -Djava.awt.headless=true"
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/tomcat-juli.jar:\
$CATALINA_HOME/bin/bootstrap.jar
case "$1" in
start)
#
# Start Tomcat
#
jsvc \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Dcatalina.home=$CATALINA_HOME \
-Dcatalina.base=$CATALINA_BASE \
-Djava.io.tmpdir=$TMP_DIR \
-Dfile.encoding=UTF-8 \
-Duser.timezone=Europe/Samara \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \
-wait 10 \
-pidfile $PID_FILE \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile '&1' \
$CATALINA_OPTS \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
#
# To get a verbose JVM
#-verbose \
# To get a debug of jsvc.
#-debug \
exit $?
;;
stop)
#
# Stop Tomcat
#
jsvc \
-stop \
-pidfile $PID_FILE \
org.apache.catalina.startup.Bootstrap
exit $?
;;
restart)
#
# Restart Tomcat
#
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage tomcat start/stop"
exit 1;;
esac
#=======================================================
apache-tomcat-7.0.25
распаковываем в /opt и делаем симлинк на /opt/apache-tomcat
Создать пользователя tomcat
adduser --system tomcat
Меняем владельца каталога /opt/apache-tomcat пользователя tomcat:
Debian -- chown -RLv tomcat:nogroup /opt/apache-tomcat
Centos -- chown -RLv tomcat:tomcat /opt/apache-tomcat
** Тестовый запуск
sudo -u tomcat /opt/apache-tomcat/bin/catalina.sh run
** в браузер по адресу http://имя_сервера:8080 должна открыться стартовая страница tomcat.
** если нужно запускать на портах ниже 1024, к примеру на стандартном 80 для http, необходимо установить утилиту jsvc
jsvc - предназначена для запуска java-программы как сервиса(демона) операционной системы.
донастроим конфиг /opt/apache-tomcat/conf/server.xml
следующий текст:
<connector connectiontimeout="20000" port="8080" protocol="HTTP/1.1" redirectport="8443"></connector>
заменим порт для http - 80, и указываем кодировку для URI:
<connector connectiontimeout="20000" port="80" protocol="HTTP/1.1" redirectport="8443" uriencoding="UTF-8"></connector>
в /etc/init.d/tomcat помещаем текст скрипта для запуска (подредактировать под свое, если что не так. обратите внимание на JAVA_HOME!!! Возможно понадобится указать полный путь к jsvc)
#=======================================================
#!/bin/sh
JAVA_HOME=/usr/lib/jvm/java-6-sun
CATALINA_HOME=/opt/apache-tomcat
TOMCAT_USER=tomcat
TMP_DIR=/var/tmp
PID_FILE=/var/run/apache-tomcat.pid
CATALINA_BASE=/opt/apache-tomcat
CATALINA_OPTS="-Xmx1024m -Xms512m -XX:MaxPermSize=128m -Djava.awt.headless=true"
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/tomcat-juli.jar:\
$CATALINA_HOME/bin/bootstrap.jar
case "$1" in
start)
#
# Start Tomcat
#
jsvc \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Dcatalina.home=$CATALINA_HOME \
-Dcatalina.base=$CATALINA_BASE \
-Djava.io.tmpdir=$TMP_DIR \
-Dfile.encoding=UTF-8 \
-Duser.timezone=Europe/Samara \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \
-wait 10 \
-pidfile $PID_FILE \
-outfile $CATALINA_HOME/logs/catalina.out \
-errfile '&1' \
$CATALINA_OPTS \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
#
# To get a verbose JVM
#-verbose \
# To get a debug of jsvc.
#-debug \
exit $?
;;
stop)
#
# Stop Tomcat
#
jsvc \
-stop \
-pidfile $PID_FILE \
org.apache.catalina.startup.Bootstrap
exit $?
;;
restart)
#
# Restart Tomcat
#
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage tomcat start/stop"
exit 1;;
esac
#=======================================================
Debian и установка Java Sun JDK7
Качаем JDK 7 tar.gz
http://www.oracle.com/technetwork/java/javase/downloads/index.html
распаковываем и переносим в /usr/lib/jvm
Тут бы самое время сделать симлинк, дабы при апдейте просто перемещать симлинк на новую версию java.
Т.е. делаем линк = jdk_current
ln -s /usr/lib/jvm/jdk1.7_ваша_версия_ /usr/lib/jvm/jdk_current
Проверяем какие версии у нас сейчас есть
sudo update-alternatives --config java
смотрим что выдало
если в выводе было что-то вроде "no alternatives for java" то запускаем
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk_current/jre/bin/java 0
если есть список с цифровыми индексами от 0 до n, то увеличиваем на 1 для следующей команды
Так если было в выводе три строки от 0 до 2, то команда выглядит с "3" в последнем параматре
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk_current/jre/bin/java 3
активируем новую версию
update-alternatives --config java
и выбираем номер нужной версии, т.е. цифра из левой колонки вывода "Selection", по сути ту, что мы в предыдущем шаге задали.
проверяем
java -version
Так же стоит подобное проделать для javac, keytool и прочими нужными программами.
Для Debian это будет что-то вроде этого:
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk_current/bin/javac _ваш_номер_альтернативы_
http://www.oracle.com/technetwork/java/javase/downloads/index.html
распаковываем и переносим в /usr/lib/jvm
Тут бы самое время сделать симлинк, дабы при апдейте просто перемещать симлинк на новую версию java.
Т.е. делаем линк = jdk_current
ln -s /usr/lib/jvm/jdk1.7_ваша_версия_ /usr/lib/jvm/jdk_current
Проверяем какие версии у нас сейчас есть
sudo update-alternatives --config java
смотрим что выдало
если в выводе было что-то вроде "no alternatives for java" то запускаем
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk_current/jre/bin/java 0
если есть список с цифровыми индексами от 0 до n, то увеличиваем на 1 для следующей команды
Так если было в выводе три строки от 0 до 2, то команда выглядит с "3" в последнем параматре
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk_current/jre/bin/java 3
активируем новую версию
update-alternatives --config java
и выбираем номер нужной версии, т.е. цифра из левой колонки вывода "Selection", по сути ту, что мы в предыдущем шаге задали.
проверяем
java -version
Так же стоит подобное проделать для javac, keytool и прочими нужными программами.
Для Debian это будет что-то вроде этого:
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk_current/bin/javac _ваш_номер_альтернативы_
пятница, 12 августа 2011 г.
Android SDK и Eclipse - настройка
** Устанавливаем Java - sun-java6-jre
** Устанавливаем JDK - sun-java6-jdk
** Скачать свежий SDK http://developer.android.com/sdk/index.html
Распаковать его и запусить ./tools/android
** Доустановить утилиты --
Available packages -> Android Repository -> Android SDK Platform-tools
(в нем содержится нужная утилитка adb)
На "64битной" системе утилита adb откзалась запускаться и выдала что-то вроде:
./adb: error while loading shared libraries: libncurses.so.5
для ее запуска понадобились два пакета "32битных" : lib32ncurses5 и lib32stdc++6
** Доустановить нужные SDK под конкретную версию ОС --
Available packages -> Android Repository -> SDK Platform Android x.x (x.x версия)
** Теперь установить ADT плагин в Eclipse. (если нужно донастроить прокси)
Help > Install New Software > кнопка Add > ввести "ADT Plugin" как Name и Location = "https://dl-ssl.google.com/android/eclipse/" > кнопка OK
выбираем "Developer Tools" и жмем Next и видим список компонентов, которые будут скачены - опять Next. Читаем лиценизию и соглашаемся с ней (чекбокс accept) и жмем Finish. В процессе будет что-то на счет "не доверенных" компонентов, доверяем всем.
Рестартим Eclipse.
** Указываем Eclipse путь к установленному SDK
Window->Preferences-> Android ->Browse - указываем путь к SDK.
** Устанавливаем JDK - sun-java6-jdk
** Скачать свежий SDK http://developer.android.com/sdk/index.html
Распаковать его и запусить ./tools/android
** Доустановить утилиты --
Available packages -> Android Repository -> Android SDK Platform-tools
(в нем содержится нужная утилитка adb)
На "64битной" системе утилита adb откзалась запускаться и выдала что-то вроде:
./adb: error while loading shared libraries: libncurses.so.5
для ее запуска понадобились два пакета "32битных" : lib32ncurses5 и lib32stdc++6
** Доустановить нужные SDK под конкретную версию ОС --
Available packages -> Android Repository -> SDK Platform Android x.x (x.x версия)
** Теперь установить ADT плагин в Eclipse. (если нужно донастроить прокси)
Help > Install New Software > кнопка Add > ввести "ADT Plugin" как Name и Location = "https://dl-ssl.google.com/android/eclipse/" > кнопка OK
выбираем "Developer Tools" и жмем Next и видим список компонентов, которые будут скачены - опять Next. Читаем лиценизию и соглашаемся с ней (чекбокс accept) и жмем Finish. В процессе будет что-то на счет "не доверенных" компонентов, доверяем всем.
Рестартим Eclipse.
** Указываем Eclipse путь к установленному SDK
Window->Preferences-> Android ->Browse - указываем путь к SDK.
Подписаться на:
Сообщения (Atom)