powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Про рефлексию вопрос
56 сообщений из 56, показаны все 3 страниц
Про рефлексию вопрос
    #38727769
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть класс
в нем
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
private final Pattern command = Pattern.compile("(?s)^(.*)\\|(.*)");
....
public void onMessage(String data) {
        Matcher matcher = command.matcher(data);
        matcher.find();

        String par = (matcher.group(2).length() == 0) ? "" : matcher.group(2);
        Class[] paramTypes = new Class[]{java.lang.String.class};
        Object[] args = new Object[]{par};

        try {
            Method method = this.getClass().getMethod(matcher.group(1), paramTypes);
            method.invoke(this, args);
        } catch (NoSuchMethodException | SecurityException ex) {
......
        } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
.......
        }
    }


это лучше, чем городить if или switch, т.к. вызываемых методов прилично.
количество вызываемых методов растёт, есть желание разделить их на логические группы, а эти группы поместить в разные файлы
но как это можно реализовать?
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38727787
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяэто лучше, чем городить if или switch, т.к. вызываемых методов прилично.

Зато типобезопасность идёт лесом. Лучше было использовать полиморфизм. На худой конец - HashMap. Тем более с лямбдами сейчас это очень просто.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38727804
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczвадяэто лучше, чем городить if или switch, т.к. вызываемых методов прилично.

Зато типобезопасность идёт лесом. Лучше было использовать полиморфизм. На худой конец - HashMap. Тем более с лямбдами сейчас это очень просто.

соглашусь, но сейчас вопрос не об этом.
а как разнести методы по разным файлам (классам?)
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38727808
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяа как разнести методы по разным файлам (классам?)
Ctrl+X, Ctrl+V
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38727824
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
шутник,
как вызывать из одного класса - методы из разных классов?
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38727832
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяшутник,

Какой вопрос, такой и ответ.

вадякак вызывать из одного класса - методы из разных классов?
Вероятно, вместо this.getClass() нужно использовать ссылку на класс, в котором находится метода.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38727868
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Я вот теряюсь в догадках, Вы что эмулируете, JMS или RPC?

Колеса уж очень квадратные....

Кто вызывает вот этот метод onMessage?
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38727870
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делаю
Код: java
1.
2.
3.
Class cl=com.Myclass.class; 
Method method = cl.getMethod(matcher.group(1), paramTypes);
method.invoke(cl, args);


на последней строке выдаёт
java.lang.IllegalArgumentException: object is not an instance of declaring class
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38727871
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTID, это вызывает WebSocketServer.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38727872
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяделаю
Код: java
1.
2.
3.
Class cl=com.Myclass.class; 
Method method = cl.getMethod(matcher.group(1), paramTypes);
method.invoke(cl, args);


на последней строке выдаёт
java.lang.IllegalArgumentException: object is not an instance of declaring class

В этой строке:

method.invoke(cl, args);

1-й параметр должен быть объектом, а не классом.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38727912
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделал так
Код: java
1.
2.
3.
4.
Class cl = com.Myclass.class;
Object objCl = cl.newInstance();
Method method = cl.getMethod(matcher.group(1), paramTypes);
method.invoke(objCl, args);


работает.
но смущает вот это
Object objCl = cl.newInstance();
насколько затратная операция?
зачем её делать многократно, можно ли (будет ли быстрее) как-то вставить её в Singleton?
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38727933
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадянасколько затратная операция?

В переиспользовании экземпляров нужно соблюдать баланс между количеством долгоживущих объектов, которые влияют на производительность GC и затратами на создание новых экземпляров. У вас высоконагруженая обработка сообщений?
Если проект взлетит, то потомки вас будут проклинать за рефлексию.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38727935
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадячем городить if или switch
если "городить" - это всё, что не нравится. То напиши через if или switch
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38727937
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
ООП в разруливании сообщений не нужен. IMHO
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728038
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадячем городить if или switch
если "городить" - это всё, что не нравится. То напиши через if или switch
если цепочка из 100 if - номально, то....
да и добавлять нужно будет и в if и метод, так я добавляю только метод.

авторЕсли проект взлетит, то потомки вас будут проклинать за рефлексию.
чем рефлексия тормознута?
и чем её можно заменить?
методов для выполнения ожидается много.
if и switch при >100 методов будет тоже не быстро.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728042
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
> 100 if

бест-практик.
Я задавал этот вопрос у чела из MS.
Он сказа что в самой MS портянки на события очень большие.
Это не БЛ, а переключатели. Это нормально.
Удачи!
PS. Можно разделить обработчики на 4 простыни из категорий событий.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728050
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
if и switch работают последовательным проходом и сравнением
как работает рефлексия?
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728055
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Напрашивается паттерн "команда" + хеш-таблица.
А с рефлексией, кроме всего прочего, есть еще и вопросы безопасности. Например, если указанный метод предназначен для работы в web, то с клиента могут прийти не только разрешенные команды, а и вообще вызов любого публичного метода.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728065
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНапрашивается паттерн "команда" + хеш-таблица.
более подробно можно?
если про web - то я могу занести все разрешенные методы в array (к примеру) и вызывать только их.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728089
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадязанести все разрешенные методы в array (к примеру) и вызывать только их.
они уже там есть при рефлексии
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728144
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяавторНапрашивается паттерн "команда" + хеш-таблица.
более подробно можно?
если про web - то я могу занести все разрешенные методы в array (к примеру) и вызывать только их.
1) во-первых, 100 методов - декомпозиция неизбежна. Паттерн "команда" предлагает безкомпромиссную декомпозицию - на каждую команду создается отдельный класс. Для этого описываем интерфейс примерно такого вида:
Код: java
1.
2.
3.
public interface ICommand {
	public void execute(String param);
}


и создаем 100 простейших классов, реализующих этот интерфейс. Необходимо добавить новую команду - просто добавляем новый класс, не торгая всё остальное
2) в методе onMessage пролучив на входе символьную команду, надо как-то получить соответствующий ей объект и выполнить метод execute() этого объекта.
Тут все зависит от прочих условий
- Например, можно заранее создать таблицу и при старте поместить в нее сконструированные объекты Map<String,ICommand>. На момент выполнения вызываем
Код: java
1.
commandMap.get(command).execute(param)


- Если есть проблемы с памятью, то можно поместить в таблицу классы Map<String,Class<ICommand>> и создавать объект только на время выполнения команды:
Код: java
1.
commandMap.get(command).newInstance().execute(param)


- можно использовать готовый механизм работы с бинами, например, спринг

начальное заполнение таблицы - тоже много вариантов.
- забить всё в коде
- сканировать определенные пакеты
- использовать ресурс с именами классов
- и т.д.
Если хотим избежать жесткого кодирования, то почти во всех вариантах будет использована рефлексия, хотя и достаточно "ленивая"
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728157
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanra,
не для флейма, а как контраргумент. Т.к. if или ООП шансы равнозначны.
- 100 классов это не меньше 100 if константа
- шаблон комманда часто применяют в ГУИ напр. на Меню, а не в системных библиотеках.
Решать аффтару.
Удачи!
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728220
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадячем рефлексия тормознута?

Нет, дело не в производительности.
Тут в соседней теме хорошее видео. Там в начале про рефлексию есть.
16488677

вадяи чем её можно заменить?
методов для выполнения ожидается много.

Любым прямым диспатчем, через Map+Callable, через полиморфизм. Можно таки внятно объяснить, зачем все методы в одном классе?

вадяif и switch при >100 методов будет тоже не быстро.

А при параллельных иерархиях будет убийственно для поддержки.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728327
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учитывая что this.getClass().getMethod(...) имеет ограниченную спецификацию методов
или количество методов счётно то совершенно нет смысла городить общую (generic)
постановку при которой нам "что угодоно" приходит в data и мы с ним делаем "что нибудь".
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728451
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из просмотренного и прочитанного можно сделать вывод -
рефлексия не очень медленный процесс, и в большинстве случаев, потерю быстродействия не поймать.
рефлексия не безопасна, если использовать в лоб, можно нарваться, но если кто-то захочет что-то взломать - вопрос в цене на защиту от взлома и цене данных...(в моём случае достаточно все методы загнать в массив + вся проверка в пару строк)
следующий вопрос - цена разработки и сопровождения
в применении к своему случаю - у меня есть метод onMessage, я его написал, отладил, и забыл про него.
дальше только добавляю методы для обработки собщений, обработка простая максимум 40 строк(подготовка и обращение к базе , try/catch + немного логики).
при этом повторяющиеся куски кода можно вынести в отдельный метод. расположив его неподалёку от места где вызывается.
получается наглядно и просто.

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

if/switch - тоже не есть хорошо - (т.е. хорошо когда получаешь за строки ) -нужно написать метод, да не зfбыть добавить его в листинг if/switch
и сколько времени потребуется для прохождения и сравнения всех 100+ строковых данных....

авторМожно таки внятно объяснить, зачем все методы в одном классе?
для начала из простоты, пока их 15 проблем нет, удобно , наглядно.
вот и встал вопрос сгруппировать в разные файлы(я не говорю классы, хотя придется группировать в классы).
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728498
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяHoBTID, это вызывает WebSocketServer.
вот тут у тебя проблема.
Если система растёт, то это не буквально растёт onMessage() на 200 методов.
Ты очень любил websockets?. Вот и получаешь его результат.
IMHO
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728518
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадяHoBTID, это вызывает WebSocketServer.
вот тут у тебя проблема.
Если система растёт, то это не буквально растёт onMessage() на 200 методов.
Ты очень любил websockets?. Вот и получаешь его результат.
IMHO
да, я очень люблю websockets, и рост onMessage ни сколько не мешает этому.
это можно сделать и на ajax, и получить теже 200 методов. только головняков будет больше. проверено.
а многие вещи с ajax просто не реализуемы.
это 100-200 методов не недостаток websockets, а лишь результат того, что послать запрос на сервер очень дешево и получить ответ также.
если надо на сервере обработать данные с клиента - я должен отправить на него (либо через ajax либо через websockets) команду и данные. пусть тем же xml, на сервере распарсить и выполнить требуемой командой действия над данными.
тоже и на клиенте - команда + данные, только на javascript все решается проще window [comanda] (data)
так что websockets здесь только облегчает жизнь.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728548
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяэто можно сделать и на ajax, и получить теже 200 методов.
откуда 200?
Есть классы, есть методы, есть параметры
Код: java
1.
http//имяПриложения/ИмяМетода?ПарамМетода1=фф, ПарамМетода2= ....
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728549
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
вот и приведи свои 200 методов.
Тебя просили.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728647
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадя,
вот и приведи свои 200 методов.
Тебя просили.
есть поля с возможностью поиска+редактирования найденного, + в зависимостиот найденного - отображаются еще несколько полей, также с возможностию редактирования.
к примеру (очень грубо) выбираешь клиента-список товаара,выбираешь товар-куча его свойств.
не обновлять же при каждом выборе страницу.
для клиента - как минимум 3 запроса - для поиска, для отправки редактированного, для удаления(как вариант пометка как не действующий).
а если делать удобный интерфейс - фильтры, сотрировки ...
1 страница -10-15 запросов, страниц 10-15, вот и посчитай
это не для сайта, это для корпоративного портала.
авторhttp//имяПриложения/ИмяМетода?ПарамМетода1=фф, ПарамМетода2= ....
ну и что я отправляю: имяметода|параметр%параметр...
мне проще распарсить мою сторку - всего два сплита
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728763
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя1 страница -10-15 запросов, страниц 10-15, вот и посчитай
ну, дак не все они идут через одно игольное ушко onMessage?
Нафига тогда ЯП _высокого_ уровня?

автормне проще распарсить мою сторку - всего два сплита
оформи СВОЮ процедуру в
Код: java
1.
значение параметра = Моё.GetParameters("sssss")


и будет замечательный велосипед.
Только не мешай код системного уровня с БЛ прикладной и транспортным уровнем.
Удачи!
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728914
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторну, дак не все они идут через одно игольное ушко onMessage?
Нафига тогда ЯП _высокого_ уровня?

почему ты считаешь игольным ушком?
http//имяПриложения/ИмяМетода?ПарамМетода1=фф, ПарамМетода2= ....
также можно считать игольным ушком.

чем отличается http//имяПриложения/ИмяМетода?ПарамМетода1=фф, ПарамМетода2= .... от websockets?

websockets удобней, проще, быстрее, универсальней, двунаправленно
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728962
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадячем отличается http//имяПриложения/ИмяМетода?ПарамМетода1=фф, ПарамМетода2= .... от websockets?
websockets удобней, проще, быстрее, универсальней, двунаправленно
ты не БАД'ы продаешь? ))...с такой формулировкой?
Откуда тогда полиморфизм и твоя тема на сокетах?
...
Rest Full (url семантика) хотя бы по семантике тот же самый как код методов программиста.
Он как минимум сохраняет состояние программы у пользователя на рабочем столе.
Было бы оригинально, если бы мне предлагали писать новый протокол общения сервера и клиента на TCP по порту 1521
Ты пишешь обвязку над сокетами? Фреймворк для прикладника-программиста?
Тогда так в теме и пиши.
Удачи!
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728971
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

я правильно понимаю что в метод onMessage приходит строка, которая содержит параметры и имя метода для вызова?

Если так, то что мешает разобрать её и за роутить на нужный метод нужного контроллера?

Я не могу понять где у тебя появляется рефлекшен для этого.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38728986
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTk,
он и перебирает методы этого.
В динамике, не привязываясь жестко в константах в коде.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729003
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Так собственно в динамике это и не нужно, это нужно на этапе формирования этого роутинга. А на самих вызовах рефлекшена и не должно быть.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729012
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTkPetro123,

Так собственно в динамике это и не нужно, это нужно на этапе формирования этого роутинга. А на самих вызовах рефлекшена и не должно быть.
согласен.
Ему все варианты и дали.
От простого if case простынки до лямбд Command и
авторЛюбым прямым диспатчем, через Map+Callable, через полиморфизм. Можно таки внятно объяснить, зачем все методы в одном классе?
Что тут технологически красиво - сложно сказать.
У него сейчас 15 методов. А будет ли 500 - неизвестно.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729035
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторRest Full (url семантика) хотя бы по семантике тот же самый как код методов программиста.
Он как минимум сохраняет состояние программы у пользователя на рабочем столе.
Было бы оригинально, если бы мне предлагали писать новый протокол общения сервера и клиента на TCP по порту 1521
Ты пишешь обвязку над сокетами? Фреймворк для прикладника-программиста?
Тогда так в теме и пиши.
мы видимо о разном говорим...
есть протокол websockets(ws) альтернатива ajax, comet и пр. поддерживается даже ie10+
опуская весь путь от браузера до сервера, имеем слушателя на понравившемся порту, сообщение после прочей обработки, расшифровки попадает в onMessage. по спецификации websockets пересылает строку (либо массив байт), как использовать эту строку - отдано прикладной программе.
я разделителями делю на части - команда и данные
команда = имя метода для обработки(для простоты).
причем здесь
авторТы пишешь обвязку над сокетами? Фреймворк для прикладника-программиста?
очень грубо говоря - я пишу вебморду для работы с данными - формы ввода, просмотра, и пр., как продолжение грубой фссоциации - интернет магазин с раширенными фунциями. можно сделать и десктоп , но придется устанавливать, а так открыл браузер и работай.(ws хорошо встроится и в десктоп, и в андроид)

авторты не БАД'ы продаешь? ))...с такой формулировкой?
Откуда тогда полиморфизм и твоя тема на сокетах?
чтоб это написать
websockets удобней, проще, быстрее, универсальней, двунаправленно
надо бадов накушаться?
против каких пунктов из выше перечисленных ты против?
одно то, что инициатором сообщения может быть сервер многого стоит. тут даже comet курит в стороне, не говоря об ajax.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729043
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧто тут технологически красиво - сложно сказать.
У него сейчас 15 методов. А будет ли 500 - неизвестно.

вот я и ищу более "красивого вида"
даже при 20 методах всё красиво и для сопровождения и для отладки.
if мне не нравится, уже писал.
"паттерн команд" тоже не очень, по скорости я думах, что проиграет рефлексии
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729050
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
OFF

все верно - ты получил массив байт. Всё остальное - сам.
В сервлет 3.0 у меня есть
Код: java
1.
2.
@WebServlet("/ИмяПроцедуры")
public class ИмяПроцедуры extends HttpServlet {


и есть
Код: java
1.
request.getParameter("ПараметрПроцедуры");


IMHO веб-сокет новая технология и этой обвязки _пока_ нет

автор - я пишу вебморду для работы с данными - формы ввода, просмотра, и пр., как продолжение грубой
ты не делишь ИС на слои и уперся в масштабирование. Но это не по теме и IMHO.
Сделай маппинг статикой через case прямо в коде. Или хеш-таблицами в оперативеке или...
Всё будет работать....потом всё равно всем нам всё переписывать ))) LOL
Удачи!
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729085
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ сервлет 3.0 у меня есть

@WebServlet("/ИмяПроцедуры")
public class ИмяПроцедуры extends HttpServlet {
и есть
request.getParameter("ПараметрПроцедуры");


да да да да
это бесспорно есть и работает.
а ты с сервера можешь посылать сообщения браузеру, без обращения браузера к серверу???

но для 100+ именПроцедур у тебя тоже возникнут аналогичные проблемы.
все методы в одном файле?
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729094
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
off
- а зачем мне сервер будет спамить в браузер?
- сервлет в отдельном файле
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729097
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
метод = классу сервлета
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729152
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадя,
off
- а зачем мне сервер будет спамить в браузер?
- сервлет в отдельном файле
а вот тут и есть преимущества - всё дело в трактовке .
если трактовать как спам - то да, это безобразие.
1)
а если тебе (опять очень грубый пример) нужно отображать изменения кучи параметров в браузере изменения случайны каждое изменение рекое, но таких изменений 20 в минуту .
ты своим способом будешь бомбить сервер на вопрос - покажи ка мне, а не изменилось ли что?
а если таких клиентов 50+
у тебя сервер будет работать в пустоту,
а если использовать "спам" - изменение пришло - сервер разослал "подписчикам" только изменённые данные и курит
2)
я выбрал клиента - уменя обновилось в окне несколько полей - сервер отправил несколько последовательно ответов для обновления этих полей и метод для обновления конкретного поля я использую многократно. в любоим месте. просто вызываю метод с нужным параметром - и он отправляет данные для обновления , нужно отобразить изменения 10 полей - сервер отправит 10 сообщений - ООП.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729200
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
1) у тебя ведь не такой проект? Мало ли каких проектов есть на свете.
Опиши свой проект...в отдельной теме.
100% что он уже есть в сети и учебниках.
Просто флейм неинтересен.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729215
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторвадя,
1) у тебя ведь не такой проект? Мало ли каких проектов есть на свете.
Опиши свой проект...в отдельной теме.
100% что он уже есть в сети и учебниках.
Просто флейм неинтересен.
у меня именно такие проекты.
в сети такого нет, использование websocets в сети пока просто демонстрация чата на ws.
я нашел хорошую библиотеку для ws её несколько модифицировал (эти тонкости ws пока в инете не рассматривают)
и использую вариант wss (с шифрованием).
если есть желание можно в скапе обсудить
с удовольствием послушаю дельные замечания.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729222
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
так, навскидку:
- сделать сервисный слой с навешиванием аннотаций так-же как в сервлет 3_0.
Т.к. программисту - прикладнику не нужны кишки твоего парсинга и маппинга.
- нагрузочное тестирование на твой канал. Т.к. в контейнере этим занимается он сам.
Удачи!
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729224
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяа если тебе (опять очень грубый пример) нужно отображать изменения кучи параметров в браузере изменения случайны каждое изменение рекое, но таких изменений 20 в минуту .
ты своим способом будешь бомбить сервер на вопрос - покажи ка мне, а не изменилось ли что?Никто ничего бомбить не будет - сервер не обязан мгновенно отвечать "ничего не изменилось". Может подожать секунд пятнадцать и, если что-то изменилось - прислать данные. Не изменилось - вот тогда так и скажет.
Этакая авторегулировка частоты опроса.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729240
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovвадяа если тебе (опять очень грубый пример) нужно отображать изменения кучи параметров в браузере изменения случайны каждое изменение рекое, но таких изменений 20 в минуту .
ты своим способом будешь бомбить сервер на вопрос - покажи ка мне, а не изменилось ли что?Никто ничего бомбить не будет - сервер не обязан мгновенно отвечать "ничего не изменилось". Может подожать секунд пятнадцать и, если что-то изменилось - прислать данные. Не изменилось - вот тогда так и скажет.
Этакая авторегулировка частоты опроса.
опять очень грубый пример
можно найти решение, но если есть более простое - почему его не использовать?
нужно на клиенте делать таймер, чтоб раз в 15 секунд опрашивать. на сервере запрос чтоб "спал".
а если в эти 15 секунд потребуется сделать ещё какой запрос? более короткий? что его обработает на клиенте?
как ответ от первого? или ?
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729261
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадянужно на клиенте делать таймер, чтоб раз в 15 секунд опрашиватьЕщё раз.
На клиенте ничего не меняется - он продолжает опросы "как раньше".
Логика обработки запроса меняется на сервере.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729270
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
ты про это?
Вот сайт. Вверху кнопка пауза. В динамике обновляет новости
http://mediametrics.ru/rating/ru/online.html?article=87963593
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729278
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё раз
нужно на клиенте делать таймер, чтоб раз в 15 секунд опрашивать. на сервере запрос чтоб "спал".
а если в эти 15 секунд потребуется сделать ещё какой запрос? более короткий? что его обработает на клиенте?
как ответ от первого? или ?
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729282
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

типа того, только у них идут запросы с клиента
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729313
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяа если в эти 15 секунд потребуется сделать ещё какой запрос?"А если дождь во время усушки?" (ц) попугай Кеша.
Разработка UI - задача сложная и до сих пор не решённая. Никем.
Конкретная проблема (получение нерегулярно меняющихся данных) может решаться так, как я сказал. На сервере. Без участия клиента.
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729321
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделал так
в Singleton
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
hm=new HashMap<>();
Pattern command = Pattern.compile("^xxx");
Matcher matcher;
Class cla = Class.forName("wss.Page1");
Object obj = cla.newInstance();
Method[] methods = cla.getMethods();
for (Method method : methods) {
 matcher = command.matcher(method.getName());
  if (matcher.find()) {
         hm.put(method.getName(), obj);
  }
 }


в onMessage
....
Код: java
1.
2.
3.
 Method method = cl.getMethod(matcher.group(1), paramTypes);
  method.invoke(Singleton.hm.get(matcher.group(1)), args);
....


убил небезопасного зайца - будут запускаться только мои методы
вопрос
если в папке wss будут классы wss.Page2, wss.Page3....
как их перебрать?
...
Рейтинг: 0 / 0
Про рефлексию вопрос
    #38729324
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovвадяа если в эти 15 секунд потребуется сделать ещё какой запрос?"А если дождь во время усушки?" (ц) попугай Кеша.
Разработка UI - задача сложная и до сих пор не решённая. Никем.
Конкретная проблема (получение нерегулярно меняющихся данных) может решаться так, как я сказал. На сервере. Без участия клиента.
вот я её и решил простым методом
причем я могу одним методом отправлять данные в браузер и в десктоп и в андроид
...
Рейтинг: 0 / 0
56 сообщений из 56, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Про рефлексию вопрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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