java

Потеря соединения с базой. Hibernate broken pipe.


  Tagged

Используя Hibernate, уже несколько раз сталкивался с проблемой потери соединения с базой данных, после достаточно долгого интервала неактивности. И каждый раз приходилось вспоминать, как же ж оно решается. Будем считать эту заметку памяткой для себя, ну и для тех, кто ее сможет найти в бескрайних просторах Internet.


Hibernate. Count запросы без HQL


  Tagged

Мне нравится пользоваться объектом Criteria для составления запросов. Очень удобно и наглядно, гораздо лучше чем писать запрос в виде HQL. Приведу пример:

	@SuppressWarnings("unchecked")
	public List<LogAdd> findAddLogs(Long minLogID) {
		Criteria criteria = session.createCriteria(LogAdd.class);
		criteria.add(Restrictions.gt("id", minLogID));
		criteria.addOrder(Order.asc("date"));
		return criteria.list();
	}

До недавнего времени приходилось использовать HQL только для запросов типа "count". Так как просто взять размер массива, означает достать все объекты из базы и только потом считать сколько их, а это нас явно не устраивает.


Установка Apache Tomcat 5.5 на Debian 4 (Etch) Linux


  Tagged

Если Вам быстро необходимо установить и настроить Apache Tomcat, возможно моя статья будет полезна.

1) Для начала необходимо установить Sun JDK 5. Взять его можно в репозитории для нестабильного программного обеспечения:

Добавим в файл репозиториев /etc/apt/sources.list следующие строки (если это еще не сделано):

# for sun-java packages in unstable
deb http://ftp.debian.org/debian/ unstable non-free
deb-src http://ftp.debian.org/debian/ unstable non-free


Имя процесса java приложения в Mac OS X


  Tagged

Вот столкнулся с проблемой, что некоторые java приложения, запущенные в системе, имеют одно и то же имя процесса. Обычно для запуска java приложений под Mac OS X пользуются утилита JavaApplicationStub. И как результат, в Activity Monitor'e висит несколько процессов с именем JavaApplicationStub.

Чтоб наглядно показать проблему, я сделал HelloWorld приложение, и с удивлением обнаружил, что для него имя процесса отображается корректно.


Создание нового проекта с помощью maven2. Часть вторая (мастер)


  Tagged

Как и было предложено в прошлой моей публикации, скрипт создания maven приложения был улучшен. Теперь он выполнен в виде мастера создания приложения, что еще более облегчает процесс.

Ответив всего на пару вопросов и выбрав тип будущего приложения, вы получите готовый к открытию в Eclipse IDE проект.


Создание нового проекта с помощью maven


  Tagged

Иногда мне приходится создавать маленькие проекты на java с целью попробовать какую-то библиотеку или же для каких-то вспомогательных нужд. Я думаю, что наиболее быстрый способ создать проект – это использовать archetype механизм в apache maven. Но, к сожалению, команда для создания нового проекта не очень удобна, так как требует от человека постоянно помнить несколько обязательных параметров (‘-DarchetypeGroupId’ or ‘-DgroupId’). Как вариант, можно сделать маленький bash скрипт, который стоит положить в корень папки с проектами.

Как пример, приведу сделанный мною скрипт (new_project.sh), который поможет быстрее стартовать:


Немного о Java I/O производительности


  Tagged

Работая над производительностью одного java проекта, я нашел что наиболее узкое место - это метод copy в утилитах file. Метод был реализован без использования буфера. Реализация была следующая: простой цикл while, в котором читался входящий поток, и сразу прочитанные данные писались в исходящий поток.

Есть хорошая статья о производительности ввода/вывода на сайте sun.

Пример 4-4 из статьи выглядит подходящим, но, как оказывается, и он не идеален. На это есть причины: моё приложение многопоточное. Каждый раз, когда я делаю синхронизацию по статическому полю, я создаю узкое место в программе – потому, что все потоки будут блокироваться, ожидая входа в синхронизированный блок кода.


 
© 2006-2010 kobyleha.com