powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Struts, Action и синхронизация
20 сообщений из 20, страница 1 из 1
Struts, Action и синхронизация
    #33358351
220 V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В методе execute() наследника Action вызываются private-методы, которым передаются HttpServletRequest, HttpServletResponse. Но это неудобно таскать за собой хвост из параметров. Удобнее сохранить его в переменную класса (ну и геттеры/сеттеры и все такое). Однако насколько мне известно, у Struts какие-то проблемы (кто-то скажет фичи) с синхронизацией, и один экземпляр экшина будет использоваться всеми запросами. И значит, переменная класса обламывается. Есть выход?
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33358430
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)ThreadLocal
2)упаковать параметры в бин и дергать его геттеры-сеттеры и все такое
3)выхода нет!

"220 V" <nospam@sql.ru>; wrote in message news:2032599@sql.ru...
В методе execute() наследника Action вызываются private-методы, которым
передаются HttpServletRequest, HttpServletResponse. Но это неудобно таскать
за собой хвост из параметров. Удобнее сохранить его в переменную класса (ну
и геттеры/сеттеры и все такое). Однако насколько мне известно, у Struts
какие-то проблемы (кто-то скажет фичи) с синхронизацией, и один экземпляр
экшина будет использоваться всеми запросами. И значит, переменная класса
обламывается. Есть выход?
Тема Ответить

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33358530
bolgare
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На самом деле выход есть элементарный:
во первых я не уверен, что по умолчанию при разных запросах будет дергаться один и тот же акшен (где это написано), то что actionForm храниться в сессии это да, а про акшены не уверен.
во вторых у акшена как и form-bean есть scope, т.е. если в struts-config прописать
<action
path="/logonSubmit"
type="app.LogonAction"
name="logonForm" scope="request" ...(struts in action.pdf page 35)
то видимо (не нашел подтверждения) он будет создаваться заново при каждом запросе.
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33358567
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>я не уверен, что по умолчанию при разных запросах будет дергаться один и
тот же акшен

откуда неуверенность? :)

>>то видимо (не нашел подтверждения) он будет создаваться заново при каждом
запросе

смотрим в javadoc - класс ActionConfig

scope - scope ("request" or "session") within which our form bean is
accessed, if any.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33358676
bolgare
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
признаю, лоханулся :)
ну значит один вариант
переопределить метод execute чтоб он создавал новый, но енто уже изврат
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33359528
Фотография johanna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
220 VВ методе execute() наследника Action вызываются private-методы, которым передаются HttpServletRequest, HttpServletResponse. Но это неудобно таскать за собой хвост из параметров. Удобнее сохранить его в переменную класса (ну и геттеры/сеттеры и все такое). Однако насколько мне известно, у Struts какие-то проблемы (кто-то скажет фичи) с синхронизацией, и один экземпляр экшина будет использоваться всеми запросами. И значит, переменная класса обламывается. Есть выход?
читаю читаю и не могу понять в чём суть вопроса?
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33359537
Фотография johanna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pitbull terrier
1)ThreadLocal
2)упаковать параметры в бин и дергать его геттеры-сеттеры и все такое
3)выхода нет!


что в бин упаковать это ясно, а ThreadLocal зачем?
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33359611
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>что в бин упаковать это ясно, а ThreadLocal зачем?


ну хочет пациент сетить члены класса экшена параметрами и затем читать их из
private-методов
создаем для каждого параметра ThreadLocal<ParamType> контейнер, и вычитываем
оттуда значения.
отсутствие проблем с синхронизацией налетсо

(я не говорю что это хорошее решение, просто вариант)

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33359651
Фотография johanna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что без этого нельзя обойтись? то ли голова у меня седня туго работает, то ли тут объяснили не совсем понятно.
есть екшн, есть бин отдельно. создай экземпляр бина, через сеты поставь параметры в бин и передавай в методы.
зачем ThreadLocal?
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33359656
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да без всего можно обойтись
просто как вариант

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33359681
Фотография johanna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pitbull terrier
да без всего можно обойтись
просто как вариант

Posted via ActualForum NNTP Server 1.3

а зачем такой замороченный вариант?
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33359691
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33359698
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johanna Pitbull terrier
да без всего можно обойтись
просто как вариант

Posted via ActualForum NNTP Server 1.3

а зачем такой замороченный вариант?
:) потомучто это вариант, а варианты они ведь разные бывают :)
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33359789
Фотография johanna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bolgareНа самом деле выход есть элементарный:
во первых я не уверен, что по умолчанию при разных запросах будет дергаться один и тот же акшен (где это написано), то что actionForm храниться в сессии это да, а про акшены не уверен.
во вторых у акшена как и form-bean есть scope, т.е. если в struts-config прописать
<action
path="/logonSubmit"
type="app.LogonAction"
name="logonForm" scope="request" ...(struts in action.pdf page 35)
то видимо (не нашел подтверждения) он будет создаваться заново при каждом запросе.
это делается не для Action a для ActionForm.
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33359801
Фотография johanna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё равно хотелось бы знать, чего хотел спросить автор вопроса.
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33361265
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johanna 220 VВ методе execute() наследника Action вызываются private-методы, которым передаются HttpServletRequest, HttpServletResponse. Но это неудобно таскать за собой хвост из параметров. Удобнее сохранить его в переменную класса (ну и геттеры/сеттеры и все такое). Однако насколько мне известно, у Struts какие-то проблемы (кто-то скажет фичи) с синхронизацией, и один экземпляр экшина будет использоваться всеми запросами. И значит, переменная класса обламывается. Есть выход?
читаю читаю и не могу понять в чём суть вопроса?

Товарищ боится, что если он запомнит request и response как атрибуты объекта класса-наследника Action, то при обработке запроса могут быть проблемы с доступом к этим атрибутам из других потоков.

Товарищ, не бойтесь. Если атрибуты не статические, никаких проблем не будет. Struts задействует для выполнения запроса определенный экземпляр класса-наследника Action и до окончания выполнения запроса (выхода из метода execute() ) только этот поток (поток контейнера, выполняющий запрос) будет иметь доступ к этому экземпляру.

В этом существенное отличие Action от Servlet.
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33361296
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М.Голованов
Товарищ боится, что если он запомнит request и response как атрибуты объекта класса-наследника Action, то при обработке запроса могут быть проблемы с доступом к этим атрибутам из других потоков.

Товарищ, не бойтесь. Если атрибуты не статические, никаких проблем не будет. Struts задействует для выполнения запроса определенный экземпляр класса-наследника Action и до окончания выполнения запроса (выхода из метода execute() ) только этот поток (поток контейнера, выполняющий запрос) будет иметь доступ к этому экземпляру.

В этом существенное отличие Action от Servlet.


правда?
а почему тогда в Oreilly's struts cookbook рекомендуется не сетить локальные поля именно по причине проблем с синхронизацией???
зы - доберусь до дома - проверю
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33361485
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверил - один экземпляр экшена на приложение

откуда инфа про один экземпляр на поток?

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33361619
Фотография johanna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johanna 220 VВ методе execute() наследника Action вызываются private-методы, которым передаются HttpServletRequest, HttpServletResponse. Но это неудобно таскать за собой хвост из параметров. Удобнее сохранить его в переменную класса (ну и геттеры/сеттеры и все такое). Однако насколько мне известно, у Struts какие-то проблемы (кто-то скажет фичи) с синхронизацией, и один экземпляр экшина будет использоваться всеми запросами. И значит, переменная класса обламывается. Есть выход?
читаю читаю и не могу понять в чём суть вопроса?

всё поняла в чём тут дело. (иногда туго доходит :))
выход есть - подумать над дизайном раз такой вопрос возник. :)

в приложении существует один экземпляр экшина,
как заметил уже неоднократно Pitbull terrier.
поэтому никаких локальных переменных класса, кроме разве констант, в экшине создавать не надо.
...
Рейтинг: 0 / 0
Struts, Action и синхронизация
    #33361640
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pitbull terrier
проверил - один экземпляр экшена на приложение

откуда инфа про один экземпляр на поток?

Posted via ActualForum NNTP Server 1.3

да, действительно... один экземпляр на все потоки. так что номер не пройдет.

Я, однако, с такой проблемой не сталкиваюсь по той простой причине, что Action у меня - только контроллер. Все операции выполняются классами-наследниками Executor, которые достаются из пулов по одному на запрос. Можете следовать этой идее.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Struts, Action и синхронизация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]