Это ожидаемый результат.
localhost
- это имя хоста, которое означает этот компьютер . Это удобный способ размещения сервера на вашем компьютере , как если бы это был удаленный сервер, но реальность такова, что он доступен только для вашего компьютера, и поэтому вы не можете получить доступ к службам, работающим на ваш localhost:3500
из другой машины .
JSF является полезной технологией, но можно, конечно, подвесить себя с ним.
Это походит, любой, который Вы расширяете размер состояния отображения (путем устанавливания больших значений на компонентах), или Вы пропускаете ссылки на компоненты в другое состояние сеанса (который был бы плох). Другой потенциальный преступник был бы чрезмерно большим представлением (я видел простоту, с которой люди могут создать вывод деревьев UI к очень большим графикам управления с таблицами данных везде). Я знаю, что IBM обеспечивает средства управления обогащенным текстом и электронной таблицей - я не могу прокомментировать, какой эффект использование их будет иметь на размер состояния.
Низко висящий плод должен проверить управляемые компоненты, настроенные на объем сессии в faces-config.xml.
JSF сохраняет две вещи между запросами:
Они разделяются, потому что некоторые средства управления, такие как дети таблицы данных, могут иметь несколько состояний (один для каждой строки). Состояние может быть сохранено любому скрытое поле на форме (который, если не зашифровано, может быть большой опасностью безопасности), или на сессии. Для размещения нескольких окон браузера, совместно использующих ту же сессию (и, в некоторых реализациях, поддержке кнопки "Назад"), несколько представлений хранятся.
Большинство созданных из IDE приложений JSF имеет отступающие бобы. Это было бы возможно через бобовый объем сессии для содержания на состояние дольше, чем Вы хотите, помещая деформацию в сессию. С тех пор имеет тенденцию быть один боб поддержки на страницу, чем больше страниц Вы имеете, тем больше проблема будет. Проверьте свой faces-config.xml, чтобы видеть, является ли это потенциальным источником проблем.
Что-то еще, что Вы могли сделать, должно будет настроить HttpSessionAttributeListener в Вашем web.xml. Можно заставить отслеживание стека помогать определить проблемные области в приложении.
Это - вторая система, которую я услышал об этом, умер из-за JSF и чрезмерного создания объекта. Другой также использовал Spring, и Будьте в спящем режиме в бэкэнде. Профилирование с OptimizeIt показало, что ответ бэкенда был на порядке миллисекунд для всех запросов, но Вы могли время браузер, представляющий снова с секундомером, потому что это заняло много времени - 30 секунд до нескольких минут. Память, использованная клиентом, была смешна.
Я был только наблюдателем, не членом той проектной группы. Я должен буду спросить, решалась ли проблема когда-либо и, если так, каково решение, возможно, было.
Но если бы две точки делают тенденцию, я сказал бы, что JSF мог бы быть фатально испорчен. Лично, я избегаю его полностью.
Почему бы не попробовать веб-фронтэнд Spring и видеть если, это помогает? Если Вы следуете за идиомой Spring, это должен быть относительно простой вопрос замены JSF с основанным на JSTL JSPs и контроллерами Spring.
Я работал над проектом JSF и нашел, что у нас была ошибка, где мы добавляли несколько JSF h:form элементы. Приведение к копии всего состояния отображения, включаемого с каждой формой. Сокращение к 1 форме на страницу побрило страницы от ~2M вниз к ~300K.
Вы могли бы сталкиваться с проблемами с большим количеством отступающих бобов как объем сессии.
Вы могли попытаться изучить Оркестр MyFaces. Это - библиотека, которая обеспечивает объем разговора, поэтому после того как пользователь закончил с определенным набором бобов, они будут удалены из сессии.
Я понимаю, что Spring WebFlow имеет подобные функции, но я действительно не изучил его!
JSF сохраняет представления в сеансе для поддержки своей богатой компонентной архитектуры (необходимо поддерживать его представление state) и может заполнить кучу при неправильном использовании. Если у вас нет больших рабочих процессов, всегда используйте небольшое количество просмотров за сеанс. Также избегайте как можно дольше держать backingbeans в сеансе. Используйте настраиваемый тег, чтобы создать объект данных только для следующего цикла запроса. Мы также можем использовать Spring Web Flow с JSF, который вводит область видимости и область потока, если у нас есть длинные рабочие процессы в приложении, чтобы уменьшить количество представлений, настроенных в сеансе. JSF можно использовать для простого создания богатого пользовательского интерфейса, что помогает создавать веб-приложения, аналогичные настольным приложениям. Выделите определенную кучу фреймворку JSF для выполнения своей работы. Но эффективно используйте память на стороне приложения и убедитесь, что нет утечки памяти. Все утечки памяти необходимо исследовать и исправлять в процессе разработки. Всегда используйте профилировщик, чтобы найти утечки памяти и узкие места в производительности, существующие в приложении.
Матем.
Если вы используете MyFaces <1.1.6, существует огромная утечка памяти в том, как он кэширует старые сериализованные представления в сеансе, не позволяя им освободиться, чтобы их можно было собрать сборщиком мусора. У меня была серьезная проблема с этим, и у меня тоже были сеансы по 50 МБ. Быстрое обновление MyFaces устранило проблему без каких-либо проблем.
Настройте постоянный сеанс в базе данных, и он будет использовать наименее используемый алгоритм для выталкивания наименее используемых сеансов из памяти. Он обладает высокой производительностью (при правильной настройке) и поможет вам быстро и конкретно.