Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Помощь по JSF


Автор: sikorasasha 15.7.2013, 21:47
У меня такой вопрос если я в бине создал ссылку на объект класса, а потом этот бин с окончанием сессии закрылся то эта ссылка объекта удалиться или будет и дальше висеть в памяти?
И так само если я в бине создал подключение к базе данных через @Resource(name="jdbc/DB"), то после окончания сессии он удалиться?

Автор: AntonSaburov 16.7.2013, 23:15
По идее, если ссылок на этот объект больше нет, то объект должен удалиться. Хотя конечно можно поиграться с интерфейсом Disposable
А вот по поводу ресурса - не факт, многое зависит от реализации. Иногда баги бывают и утекают ресурсы.

Автор: sikorasasha 17.7.2013, 00:54
Заметил что когда поставил закрытие сессии через 1 минуту и она закрылась, то очистка не происходит, но она вроде происходит сама позже. От хорошо бы в деструктор бина кинуть что бы при его закрытии очищался весь мусор с этого бина. Это ряльно реализовать? Насколько я понял, то это нужно очищать кеш?

Автор: sikorasasha 17.7.2013, 10:47
Я заметил что когда RAM доходит к минимуму, то java немного освобождает памяти, может можно где то выставить этот минимум? Я использую glassfish, я там нашел в настройках такой раздел как EJB Container там есть Cache Settings. Может где то там можно настроить это? 

Автор: 4epT 22.7.2013, 13:31
Добрый день. Вы не можете явно управлять тем, что будет удалено сразу же после окончания сессии. За этим следит GC и как уже сказал AntonSaburov, если на объект не осталось ссылок, то GC почистит его.
А насчет ресурсов (подключения к базе данных), я бы вообще порекомендовал использовать другой подход... Используйте единый пул конектов, при надобности из пула получаете готовый конекшен, а после того как работу с ним закончили, возвращайте его обратно в пул.

Автор: sikorasasha 23.7.2013, 12:07
Спасибо, ещё такой вопрос, есть у мене класс или бин с программой, как мне сделать что бы это класс или бин запускались например каждую минуту. Подскажите как это можна реализовать. Может есть анотация такая?  Или какой то другой способ. 

Автор: 4epT 23.7.2013, 13:35
Ну есть http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ScheduledExecutorService.html от Oracle/Sun, я его никогда не использовал.

Есть еще библиотека http://quartz-scheduler.org/. С ней работал очень давно ...

Ну и можно написать свое решение  smile 

В спринге вроде тоже есть некий Scheduler.

Автор: sikorasasha 23.7.2013, 13:39
Спасибо) буду читать)

Автор: sikorasasha 24.7.2013, 10:00
Ещё такой вопрос есть, у меня есть url страницы например welcom.xhtml, на этой странице есть календарь, как мне сделать что бы при нажатии на какое то число календаря url данной страницы менялся относительного того какое число было нажато на календаре, например welcom-02-07-2013.xhtml И при нажатии на календаре на другое число, что бы это число менялось.

Автор: 4epT 24.7.2013, 10:18
Что бы поменять url как в примере, нужно делать явный редирект. Нужно либо изначально формировать каждую дату как ссылку, либо делать это через JS (вешать слушателей на определенный класс и обрабатывать его). Но тут вопрос зачем такое делать ? Почему не менять hash ?

Автор: sikorasasha 24.7.2013, 10:26
Как мне передать дату с p:calendar p-это primefaces в js?

Автор: sikorasasha 28.7.2013, 12:27
Такая проблема, через hesh добавляю в url дату календаря, и выходит такой url у меня "mysite.ru#25.07.2013". Клацаю по датам календаря и url меняется, но когда меняю вручную дату в url, то ничего не меняется и когда кому то скидываю эту ссылку, с этой датой, то у него открывается текущая дата а не та какую я скинул. Как это решить? От сделать так как календарь на этом сайте http://hotcharts.ru/europaplus/history/20.07.2013/

Автор: sikorasasha 28.7.2013, 15:05
Сделал от так

Код

<f:metadata>
         <f:viewParam name="date" value="#{calendarBean.sa}"/>
    </f:metadata>
.....
<p:calendar id="sa" value="#{calendarBean.date1}" pattern="dd/MM/yyyy" locale="ru" mode="inline" mindate="01/07/2013" maxdate="20/07/2013"> 
            <p:ajax event="dateSelect" update="s"/>    
        </p:calendar> 
<h:panelGroup id="s">
            
        <h:outputText value="#{calendarBean.sa}"/>
        <p/>
        <h:link value="1" outcome="index" includeViewParams="true">
            <f:param name="date" value="#{calendarBean.sa}" />
        </h:link>
        </h:panelGroup>


если нажать на дату на календаре, а потом на ссылку 1, то меняется адресная строка на дату, как сделать что бы она менялась сразу после нажатия на дату на календаре, что бы не нужно было нажимать на ссылку.

Автор: sikorasasha 29.7.2013, 11:43
Придумал ещё вариант через javascript от такой

Код

<f:metadata>
         <f:viewParam name="date" value="#{calendarBean.s}"/>
</f:metadata>
<script type="text/javascript">
function q()
                        {
                        var date='#{calendarBean.s}';
                        var links="index.xhtml?date=";
                        window.location.href =links+date;
                        }
        </script>
.....
<p:calendar value="#{calendarBean.date1}" pattern="dd/MM/yyyy" locale="ru" mode="inline" mindate="01/07/2013" maxdate="20/07/2013"> 
            <p:ajax event="dateSelect" oncomplete ="q();"/>                                 
</p:calendar> 


Но проблема в том что javascript после изменения url обновляет страницу, а <f:viewParam name="date" value="#{calendarBean.sasha}"/> берет старое значение и меняет на него. Помогите.

Автор: sikorasasha 3.8.2013, 12:09
как можно с javascript передать перемену в bean?

Автор: sikorasasha 6.8.2013, 00:25
Вопрос актуален, помогите, не могу никак передать. Буду очень благодарен.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)