2015-09-09 2 views
1

Эта проблема может иметь дело с очень специфическим Domino версией (см ниже), так что я начинаю с некоторыми техническими деталями:XPages попадающий из бокового кэша сервера

Сервера в вопросе виртуализированной Windows 2008 R2 64bit машина. Domino релиз

IBM Domino (г) сервера (64 бит) (Release 9.0.1FP4 HF70 для Windows/64)

Патч последней безопасности виртуальной машины Java (9.0.1.4 от 20150724) установлен ,

Я могу ошибаться, но я чувствую, что проблема началась после того, как мы установили последние патчи (FP4 HF70 и JVM):

Об одном XPage У меня есть очень простая кнопка типа «Обновить» просто вызывая частичное обновление на xp:panel (id="pnMainContainer"), окружающее большую часть моей страницы. Среди других компонентов есть панель с вкладками внутри pnMainContainer. После загрузки страницы открывается первая из трех вкладок.

Предполагая, что у меня есть третья вкладка открыта, обычно, если я нажму кнопку «Обновить», вкладка № 3 останется открытой, и ее содержимое будет обновлено, как ожидалось.

Иногда, однако, после того, как я оставил страницу открытой на несколько минут (не могу сказать, как долго, может быть, где-то около получаса), обновление, очевидно, возвращается в исходное состояние, показывая первую вкладку вместо тот, который был открыт раньше, и опустошающий все редактируемые поля, которые были заполнены раньше.

Когда это произойдет, я вижу следующее предупреждение появляется на консоли:

HTTP JVM: ВНИМАНИЕ: CLFAD #### W: данные состояния не доступен для/ , потому что Моей страницы никакого контроля дерево не было найдено в кэш.

Я знаю этот поста здесь: Xpages document changing document mode?, и хотя я не использую Xagents в моем приложении я попытался установить мою страницу viewState свойства nostate. Это, по-видимому, не помогло решить проблему.

Еще одна деталь, которая может быть полезна, заключается в том, что на рассматриваемой странице используется управляемый интерфейс, связанный с viewScope.

Любые идеи, что может быть причиной этого, и - более того - как изменить это поведение?

Update 2015-09-10: следующие @ предложения Павла ниже я установить тайм-аута сеанса моего приложения 120 минут прошлой ночью (xsp.session.timeout=120). Сегодня утром я снова попробовал: загрузил страницу, о которой идет речь, и пусть она сидит там около. 45 минут. По прошествии этого времени нажмите кнопку частичного обновления. Результат: страница перезагружается в исходное состояние, а на консоли сервера отображается то же предупреждение, что и вчера.

Для полной полноты здесь используется весь компонент xsp моего приложения.как сейчас:

xsp.error.page.default=true 
xsp.library.depends=com.ibm.xsp.extlib.library 
xsp.resources.aggregate=true 
xsp.theme=oneuiv3.0.2 
xsp.session.timeout=120 
xsp.application.timeout=120 
xsp.persistence.mode=basic 

Возможно, есть что-то такое, что может вызвать такое поведение?

Some more details: сделал еще несколько тестов и обнаружил следующие детали:

  1. с указанными выше xsp.properties кэширования выглядит стабильной долгое время, пока я позволяю страницы просто сидеть там
  2. как только я сделаю какие-либо корректировки на моей странице или в связанных кодах (SSJS libs, управляемые компоненты или сама страница), кеш должен быть перестроен по мере потери состояния моей страницы (даже через несколько секунд). Неважно, независимо от того, включена ли функция «Build automatically» в Designer или нет.
  3. Пробовал постоянство страницы настройки с xsp.persistence.mode=basic до xsp.persistence.mode=file. Это приводит к «java.io.NotSerializableException», как только я открываю вкладку №3, которая использует внутренние свойства управляемой панели, которая зарегистрирована на уровне viewScope
  4. Построено очень простое приложение на том же сервере, несколько частичных кнопок refesh: результат заключается в том, что состояние страницы никогда не теряется для страниц из этого тестового приложения.

Пока кеш теряется только при обновлении дизайна, мне все равно. Но я боюсь, что это может обостриться, если многие пользователи начинают получать доступ к страницам.

Что-нибудь еще, что я мог бы сделать для повышения производительности?

ответ

3

viewState = "nostate" в основном означает, что не храните дерево компонентов или переменные области для этой страницы на стороне сервера. Вот почему вы используете его для XAgents, который никогда не будет частично обновляться.

Ключевыми данными являются: 1) Как быстро сеанс XPages установлен на таймаут. После этого вы потеряете данные состояния. Я не думаю, что управление keepSessionAlive помогает здесь. 2) Открываются ли в браузере другие вкладки. Существуют другие свойства XPages, которые определяют количество страниц, хранящихся в памяти/диске. Максимальное значение сохраняется для всего сеанса браузера, и, как только вы нажмете максимум, самые ранние будут сброшены из памяти, поэтому одно и то же сообщение (и другая причина для установки ностата на XAgents.)

Похоже, Обратите внимание, что тайм-аут сеанса XPages и тайм-аут http - это отдельные таймауты. Во-первых, когда данные состояния для текущего сеанса удаляются и зависят от приложения (поскольку каждое приложение XPages имеет отдельную JVM времени выполнения), второе, когда последующий запрос в браузере будет запрашиваться аутентификация.

+0

«viewState =" nostate "в основном menans ...": Я действительно не ожидал, что это поможет, но я думал, что, по крайней мере, попытаюсь ... - Вы, должно быть, правильно, потому что он «упал», как если бы произошел тайм-аут; - в отношении «Тайм-аута сеанса Xpages»: вы r IGHT. мы уже пробовали «keepSessionAlive», но безрезультатно; Но где бы я установил это значение? Это в xsp.properties >> timeout section >> session timeout? –

+1

Вы можете установить его там для указания на уровне приложения или на сервере для всех приложений на этом сервере. (На уровне сервера у вас также может быть файл xsp.properties, хотя я не могу вспомнить, не проверив, где он хранится) –

+0

no prob, я думаю, я знаю, где это ... еще я найду его. Большое спасибо (как всегда) –

Смежные вопросы