Настройка JSF

Это ожидаемый результат.

localhost - это имя хоста, которое означает этот компьютер . Это удобный способ размещения сервера на вашем компьютере , как если бы это был удаленный сервер, но реальность такова, что он доступен только для вашего компьютера, и поэтому вы не можете получить доступ к службам, работающим на ваш localhost:3500 из другой машины .

11
задан trunkc 27 May 2009 в 12:11
поделиться

7 ответов

JSF является полезной технологией, но можно, конечно, подвесить себя с ним.

Это походит, любой, который Вы расширяете размер состояния отображения (путем устанавливания больших значений на компонентах), или Вы пропускаете ссылки на компоненты в другое состояние сеанса (который был бы плох). Другой потенциальный преступник был бы чрезмерно большим представлением (я видел простоту, с которой люди могут создать вывод деревьев UI к очень большим графикам управления с таблицами данных везде). Я знаю, что IBM обеспечивает средства управления обогащенным текстом и электронной таблицей - я не могу прокомментировать, какой эффект использование их будет иметь на размер состояния.

Низко висящий плод должен проверить управляемые компоненты, настроенные на объем сессии в faces-config.xml.

JSF сохраняет две вещи между запросами:

  • представление (все средства управления на странице)
  • состояние отображения (состояние средств управления)

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

  • Должен быть параметр конфигурации определить номер состояний отображения, которые приложение сохранит на сессии для данного пользователя в любой момент времени.
  • Можно измерить размер состояния отображения путем обеспечения StateManager, который имеет размеры, размер сохраненного представления/состояния (настройте StateManager в faces-config.xml с общедоступным конструктором, который берет StateManager - посмотрите спецификацию JSF PDFs для получения дополнительной информации; состояние является сериализуемым, и можно проверить его размер путем дампа его к потоку).

Большинство созданных из IDE приложений JSF имеет отступающие бобы. Это было бы возможно через бобовый объем сессии для содержания на состояние дольше, чем Вы хотите, помещая деформацию в сессию. С тех пор имеет тенденцию быть один боб поддержки на страницу, чем больше страниц Вы имеете, тем больше проблема будет. Проверьте свой faces-config.xml, чтобы видеть, является ли это потенциальным источником проблем.

Что-то еще, что Вы могли сделать, должно будет настроить HttpSessionAttributeListener в Вашем web.xml. Можно заставить отслеживание стека помогать определить проблемные области в приложении.

22
ответ дан 3 December 2019 в 02:11
поделиться

Это - вторая система, которую я услышал об этом, умер из-за JSF и чрезмерного создания объекта. Другой также использовал Spring, и Будьте в спящем режиме в бэкэнде. Профилирование с OptimizeIt показало, что ответ бэкенда был на порядке миллисекунд для всех запросов, но Вы могли время браузер, представляющий снова с секундомером, потому что это заняло много времени - 30 секунд до нескольких минут. Память, использованная клиентом, была смешна.

Я был только наблюдателем, не членом той проектной группы. Я должен буду спросить, решалась ли проблема когда-либо и, если так, каково решение, возможно, было.

Но если бы две точки делают тенденцию, я сказал бы, что JSF мог бы быть фатально испорчен. Лично, я избегаю его полностью.

Почему бы не попробовать веб-фронтэнд Spring и видеть если, это помогает? Если Вы следуете за идиомой Spring, это должен быть относительно простой вопрос замены JSF с основанным на JSTL JSPs и контроллерами Spring.

3
ответ дан 3 December 2019 в 02:11
поделиться

Я работал над проектом JSF и нашел, что у нас была ошибка, где мы добавляли несколько JSF h:form элементы. Приведение к копии всего состояния отображения, включаемого с каждой формой. Сокращение к 1 форме на страницу побрило страницы от ~2M вниз к ~300K.

3
ответ дан 3 December 2019 в 02:11
поделиться

Вы могли бы сталкиваться с проблемами с большим количеством отступающих бобов как объем сессии.

Вы могли попытаться изучить Оркестр MyFaces. Это - библиотека, которая обеспечивает объем разговора, поэтому после того как пользователь закончил с определенным набором бобов, они будут удалены из сессии.

Я понимаю, что Spring WebFlow имеет подобные функции, но я действительно не изучил его!

1
ответ дан 3 December 2019 в 02:11
поделиться

JSF сохраняет представления в сеансе для поддержки своей богатой компонентной архитектуры (необходимо поддерживать его представление state) и может заполнить кучу при неправильном использовании. Если у вас нет больших рабочих процессов, всегда используйте небольшое количество просмотров за сеанс. Также избегайте как можно дольше держать backingbeans в сеансе. Используйте настраиваемый тег, чтобы создать объект данных только для следующего цикла запроса. Мы также можем использовать Spring Web Flow с JSF, который вводит область видимости и область потока, если у нас есть длинные рабочие процессы в приложении, чтобы уменьшить количество представлений, настроенных в сеансе. JSF можно использовать для простого создания богатого пользовательского интерфейса, что помогает создавать веб-приложения, аналогичные настольным приложениям. Выделите определенную кучу фреймворку JSF для выполнения своей работы. Но эффективно используйте память на стороне приложения и убедитесь, что нет утечки памяти. Все утечки памяти необходимо исследовать и исправлять в процессе разработки. Всегда используйте профилировщик, чтобы найти утечки памяти и узкие места в производительности, существующие в приложении.

Матем.

1
ответ дан 3 December 2019 в 02:11
поделиться

Если вы используете MyFaces <1.1.6, существует огромная утечка памяти в том, как он кэширует старые сериализованные представления в сеансе, не позволяя им освободиться, чтобы их можно было собрать сборщиком мусора. У меня была серьезная проблема с этим, и у меня тоже были сеансы по 50 МБ. Быстрое обновление MyFaces устранило проблему без каких-либо проблем.

1
ответ дан 3 December 2019 в 02:11
поделиться

Настройте постоянный сеанс в базе данных, и он будет использовать наименее используемый алгоритм для выталкивания наименее используемых сеансов из памяти. Он обладает высокой производительностью (при правильной настройке) и поможет вам быстро и конкретно.

1
ответ дан 3 December 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: