@jvmchat

Страница 2491 из 2890
Dmitry
24.05.2018
23:55:55
не совсем, это получается обработчик прилетающих пакетов в вебсокете а я хочу пульнуть в вебсокет пакет. чтобы это сделать — нужно достучаться до бродкастера. я хотел это сделать из другого класса как я понимаю, можно как-то достучаться до класса с @AtmosphereHandlerService, но как получить проинициализированный экземпляр — тоже не понимаю. Не статическим же делать BroadcasterFactory

Google
Dmitry
24.05.2018
23:59:23
так оно лежит в import org.atmosphere.cpr.BroadcasterFactory; и какой-то магией инициализируется

без спринга. просто через io.undertow.servlet

Alpha
25.05.2018
00:00:04
Ага, сейчас глянем

Dmitry
25.05.2018
00:01:46
в принципе, можно вместо @AtmosphereHandlerService указать явно в сервлете какой юзать класс (WebApi) servletBuilder.addServlet(Servlets.servlet("AtmosphereServlet", AtmosphereServlet.class) .addInitParam("org.atmosphere.cpr.AtmosphereHandler", "ru._.screen.webserver.WebApi") но тоже не понятно, как достучаться до экземпляра потом

Alpha
25.05.2018
00:01:48
Можно конфигурировать через web.xml

Хотя странно, оно по дефолту то, что у тебя указано

http://async-io.org/apidocs/org/atmosphere/cpr/ApplicationConfig.html#BROADCASTER_FACTORY

Dmitry
25.05.2018
00:03:56
Можно конфигурировать через web.xml
так я же могу через addInitParam подсунуть то, что в xml в <init-param> живёт

может инжект BroadcasterFactory работает только в специальном контексте? можно ли как-то получить список того, что можно инжектить?

Alpha
25.05.2018
00:05:33
Подожди, а контекст? Немного не вдупляю: оно может как подсасывать параметры из web.xml, так и устанавливаться программно.

может инжект BroadcasterFactory работает только в специальном контексте? можно ли как-то получить список того, что можно инжектить?
Попробуй через XML-конфигурацию. М.б. взлетит. Это же, считай, конфигурация сервлета.

Т.е. оно описывает контекст всего приложения

Google
Dmitry
25.05.2018
00:12:14
вот конфигурю сервлет (руками, без хмл): servletBuilder.addServlet(Servlets.servlet("AtmosphereServlet", AtmosphereServlet.class) .addInitParam("org.atmosphere.cpr.AtmosphereHandler", "ru._.screen.webserver.WebApi") .addMapping("/data/*") .setAsyncSupported(true) .setLoadOnStartup(1) ); инжектнутый бродкастер в ru._.screen.webserver.WebApi работает. вне класса — не работает. может в то время как происходил инжект он был ещё null…

я решал эту проблему навешивая на WebApi Listener события и вызывая событие с нужным пакетом, который нужно в бродкаст пихнуть, но как-то это не очень выглядит

Alpha
25.05.2018
00:14:11
Т.е. WebApi в этом контексте, а всё остальное уже нет. Итог немного предсказуем. Тебе нужна глобальная конфигурация же, в таком случае

Dmitry
25.05.2018
00:15:46
а можно как-то достучаться до этого экземпляра WebApi? оно ведь где-то в сервлетных недрах живёт или как-то со статическими методами поиграться?

или при создании WebApi из конструктора куда-то складывать ссылку на this

Dmitry
25.05.2018
00:22:14
так я могу всё тоже самое прописать при инициализации сервлета. но я не очень понимаю, что именно писать, в таком случае, в XML/код инициализации. и как вообще эту проблему решать в общем случае? вот есть экземпляр класса, который сидит непонятно где. и нужно дёрнуть оттуда метод.

Alpha
25.05.2018
00:26:41
так я могу всё тоже самое прописать при инициализации сервлета. но я не очень понимаю, что именно писать, в таком случае, в XML/код инициализации. и как вообще эту проблему решать в общем случае? вот есть экземпляр класса, который сидит непонятно где. и нужно дёрнуть оттуда метод.
Смотри, объект же создаётся не просто так, с бухты-барахты. Как миинимум он имеет определённое состояние. При инициализации через фреймворк, он принимает необходимое состояние. Собственно, а почему бы тебе нужные классы через .addInitParams(...) не добавить в этот же контекст?

Dmitry
25.05.2018
00:49:54
так мне из приложения нужно до туда достучаться — не все же классы туда добавлять

Alpha
25.05.2018
01:01:53
Aleksey
25.05.2018
02:00:24
Anton
25.05.2018
03:51:30
Евгений
25.05.2018
04:05:46
и правда по другому выглядит

Loljeene
25.05.2018
04:07:01
это которое по дважды ctr+Q?

сначала инплейс, потом докается?

Евгений
25.05.2018
04:08:19
ну наконец-то это стало удобным!

Vyacheslav
25.05.2018
04:22:44
Aleksey
25.05.2018
05:41:34
ну да работают

Google
Aleksey
25.05.2018
05:41:50
у меня пропертя была нал

Да
а вот если ты десериализуешь объект в кастомном десериализаторе и он представлен в виде LinkedHashMap, то как им заполнить новый объект?

Роман
25.05.2018
06:09:00
Ну это смотря сколько наменял
на самом деле большую часть даже зафиксил, сейчас всё поправил, только теперь вот что странно на ивент окно срабатывает сразу же, т.е оно не открылось, а уже обработало своё закрытие WTF?!

Kool
25.05.2018
06:09:46
кастомными десериализаторами редко пользовался

в основном для дат

Роман
25.05.2018
06:15:38
я сейчас глянул 5 приложений и у них sqlite у всех, это рандомные. Вопрос почему бы просто на android postgresql не портировать и доточить, аля на каждое приложение appName - имя пользвателя + таблицы appName.table и доступ только к ним

И готово это быстро, быстрее чем 20 копий sqlite на каждое приложение

Роман
25.05.2018
06:33:22
зачем же они его ещё тянут

или приложения* говно

Denis
25.05.2018
06:40:48
зачем же они его ещё тянут
Изоляция же. С единым сервером куча гемор будет, а тут папку стёр и всё.

Роман
25.05.2018
06:42:02
можно было бы api поверх бд накатить

Denis
25.05.2018
06:42:43
Смысл? KISS же

Роман
25.05.2018
06:42:53
кисс?

Denis
25.05.2018
06:43:22
Принцип такой, не усложнять

Роман
25.05.2018
06:43:37
а точно

Роман
25.05.2018
06:46:10
выглядит как костыль

Google
Анатолий
25.05.2018
06:46:20
Плюс sqlite быстрый и лёгкий. А ограничение на одновременную запись только для 1 источника - ну такое, для телефона это не проблема даже

выглядит как костыль
Велосипедить полноценную многопользовательскую БД на телефон чтоб хранить всякую мелочёвку - это даже не оверхед

Роман
25.05.2018
06:49:02
с одной стороны пофиг и sqlite норм. с другой приложения часто цепляются к сайту который цепляется к базе. Теперь понял в целом неплохое решение для почти любого приложения

Роман
25.05.2018
06:51:55
да, в общем не надо мне углубляться в ООП, а то мозги поплывут, в общем дублирование кода != дублирование либы

Я правильно понимаю что REST это ещё одно решение с потоками, например как ооп с его блокирующими потоками или фп с отсутвием блокировок?

Роман
25.05.2018
07:06:26
ну т.е я имею ввиду rest, oop, fp это всё способы решить проблемы с многопоточностью?

Ivan
25.05.2018
07:06:42
вообще то нет

rest это апи поверх http протокола, как например web сервисы, это просто способ общаться клиенту с сервером ооп и фп это подходы к программированию и структуре кода в целом

Евгений
25.05.2018
07:09:18
REST это тоже просто набор рекомендаций (читай подход)

Ivan
25.05.2018
07:11:35
я особо не видел общий набор рекомендаций

Роман
25.05.2018
07:13:06
В событийно-ориентированном приложении компоненты взаимодействуют друг с другом путём отправки и получения сообщений — дискретных частей информации, описывающих факты.

я вот поэтому и спрашиваю

получается осоп

объектно-событийно-ориентированное программирование

что немного не укладывается в голове

Евгений
25.05.2018
07:14:40
слово "событийно" как бы намекает, что никаких сообщений нет, есть события, на которые реагируют объекты в системе

Google
Евгений
25.05.2018
07:15:23
одни объекты подписываются на события, другие их публикуют

это если совсем по простому

Роман
25.05.2018
07:16:07
т.е оба подхода могу бысть совмещены и особых проблем не будет?

Евгений
25.05.2018
07:16:58
будут проблемы или нет зависит от коэфицента кривизны рук разработчика, как правило)

Роман
25.05.2018
07:17:39
ок, спасибо!

Хоть разобрался что это и чем едят

Ivan
25.05.2018
07:18:39
сомневаюсь) учитывая что ты писал от полного понимания еще очень далеко

Евгений
25.05.2018
07:20:25
ну, надеюсь вектор направления усилий на изучение мы задали

Евгений
25.05.2018
07:32:30
я особо не видел общий набор рекомендаций
Общий набор рекомендаций есть у Мартина Фаулера: https://martinfowler.com/articles/richardsonMaturityModel.html

Ivan
25.05.2018
07:39:00
ну это такое

Роман
25.05.2018
07:53:50
not bad

Anton
25.05.2018
09:42:04
Ага, что-то сделали
можешь меня ссылкой ткнуть? нигде не вижу такого

можешь меня ссылкой ткнуть? нигде не вижу такого
вижу что просто UI для жавадока немного обновился. но прикручивать ничего не надо - оно просто есть

Dmitry
25.05.2018
11:09:28
https://github.com/Atmosphere/atmosphere/wiki/Configuring-Atmosphere's-Classes-Creation-and-Injection
так ведь это чтобы свой объект создать и инжектить, не?

private static volatile WebApi instance; public WebApi() { instance = this; } public static WebApi getInstance() { return instance; } я пока только так придумал. это очень кривое решение?

Страница 2491 из 2890