Обновить
11
0
Вячеслав@bvn13

Пользователь

Отправить сообщение
После загрузки тонкий клиент подключается к vpn серверу

На своем опыте скажу, что это — так себе схема. Мой vps был успешно заблочен РКН-ом в одну из первых волн блокировок. Я подключился в обратную сторону: мой сервер внутри РФ — это сервер VPN, а заграничный — это клиент VPN.
Мне кажется (я точно ловил), что будет NullPointerException при получении списка песен
people.getSongItems()

Т.к. гибернейт успевает закрыть транзакцию после чтения списка people-ов, и EAGER поля остаются невычитанными из БД. Соответственно, весь метод преобразования Entity в DTO с чтением EAGER полей нужно оборачивать в @Transactional аннотацию.
видимо, SSD и 16Гб ОЗУ делает свое дело…
как воспроизвести?
У меня и по бекэнду тоже есть претензии к архитектуре. Почему бесплатное объявление висит в выдаче из 30 дней только первые 2-3 и последние 4-5? Почему в серединные 20-25 дней оно не показывается в выдаче другим людям (или показ очень редкий), и тем самым клянчатся деньги на платные объявления?
Я и с чистыми как-то раз еле выехал. Не хотела меня система пропускать — хоть что делай. И как на зло диспетчер не особо быстро принял вызов.
Оу. Тогда мой вопрос, по-видимому, не уместен. Я читал по-диагонали.
Т.е. serverless — это использование сторонних сервисов для конструирования приложения и его дальнейшего размещения? И почему именно swifty? Это реклама?
Интересно, как будут расценивать квадрокоптеры с видеокамерами? с одной стороны — можно природу и архитектуру города снимать, а с другой — и соседей тоже.
Ссылка на youtube канал не работает. В ней затесалась скобка в конце.
Тогда все это похоже на proof of concept с очень ограниченной областью применения.
в пункте 15 я не увидел той магии, о которой было заявлено. в JS объявляются переменные, ну вроде как Java типы… ну а где профит? как данные из Java-сервера передать в клиента? Можешь сделать пример, который будет хотя бы текущую дату из переменной, объявленной в Java модуле на сервере, показывать на странице? или эта тема вообще не связана с клиент-серверным взаимодействием, а просто о том, как можно ноду под граалем запустить?
Да, немного почитав, я, что не нужно.
Я тут поразмыслил над вашим кейсом. Вряд ли у вас возможен случай, когда вы не можете достоверно определить бин. В том смысле, что название бина составляется в рантайме. Скорее всего, выбор все-таки из конечного числа бинов. И если добавляется новый обработчик-бин, то нужно его прописать и перекомпилировать. В таком случае вам подойдет вариант с Router-ом. Т.е. вы добавляете бин, прописываете проперти и добавляете условие по которому этот бин «сработает».

from("timer:trigger")
    .process(exchange -> exchange.setProperty("master", "masterObject1"))
    .choice()
         .when(exchange -> exchange.getProperty("master").equals("masterObject1"))
         .bean("masterObject1")
         .otherwise().log("NONE")

Кажется, я нашел решение для вашего случая. Описано здесь.

Вот тест:

@Component
public class BeanResolver {
    public String routeMe(String body, Exchange exchange) {
        return "bean:"+exchange.getProperty("master");
    }
}

@Component
public class MasterObject1 {

    private static final Logger logger = LoggerFactory.getLogger(MasterObject1.class);

    @Handler
    public void handler(Exchange exchange) {
        logger.warn("HELLO FROM "+this.getClass().getName());
    }
}

@Component
public class MySpringBootRouter extends RouteBuilder {

    @Override
    public void configure() {

        from("timer:trigger")
                .process(exchange -> exchange.setProperty("master", "masterObject1"))
                .dynamicRouter(method(BeanResolver.class, "routeMe"));
    }

}



Выхлоп:

2018-04-03 10:39:07.695 WARN 3228 --- [timer://trigger] ru.bvn13.test.MasterObject1 : HELLO FROM ru.bvn13.test.MasterObject1
2018-04-03 10:39:07.695 WARN 3228 --- [timer://trigger] ru.bvn13.test.MasterObject1 : HELLO FROM ru.bvn13.test.MasterObject1
Я создал тестовый проект из мавен-архетипа camel-archetype-spring-boot, и сделал вот что:

@Component
public class TestBean1 {

    @Handler
    public void test1(Exchange exchange) {
        System.out.println("TEST 1");
    }

}

@Component
public class MySpringBootRouter extends RouteBuilder {

    @Override
    public void configure() {

        Object bean1 = getContext().getRegistry().lookupByName("testBean1");

        from("timer:trigger")
                .bean(bean1)
                .transform().simple("ref:myBean")
                .to("log:out");
    }

    @Bean
    String myBean() {
        return "I'm Spring bean!";
    }

}



и получаю в консоль вот такое:

TEST 1
2018-04-02 15:27:56.643 INFO 15716 --- [timer://trigger] out : Exchange[ExchangePattern: InOnly, BodyType: String, Body: I'm Spring bean!]
TEST 1
2018-04-02 15:27:57.624 INFO 15716 --- [timer://trigger] out : Exchange[ExchangePattern: InOnly, BodyType: String, Body: I'm Spring bean!]
TEST 1
2018-04-02 15:27:58.624 INFO 15716 --- [timer://trigger] out : Exchange[ExchangePattern: InOnly, BodyType: String, Body: I'm Spring bean!]
TEST 1
2018-04-02 15:27:59.623 INFO 15716 --- [timer://trigger] out : Exchange[ExchangePattern: InOnly, BodyType: String, Body: I'm Spring bean!]
TEST 1
2018-04-02 15:28:00.625 INFO 15716 --- [timer://trigger] out : Exchange[ExchangePattern: InOnly, BodyType: String, Body: I'm Spring bean!]



Попробуйте использовать конструкцию
getContext().getRegistry().lookupByName("testBean1");
для получения конкретного бина по имени.
Задавайте вопросы Клаусу в комментариях к этому тексту, и автор самого интересного вопроса (которого мы с Клаусом выберем уже 2 апреля) получит от нас и наших друзей из Jug.ru билет на конференцию и сможет не только услышать Клауса и других участников вживую, но и принять участие в розыгрыше книги «Camel in Action».

Уже не будет розыгрыша? или это и был розыгрыш?
.bean(exchangeProperty[propertyName].getMyBeanName())

а так не сработает?
Вопрос касательно микросервисной архитектуры.

Всем известно, что у фреймворка SpringBoot существует своя экосистема для построения микросервисов. Также, не секрет, известно, что проектов, построенные на Apache Camel, хорошо работают под управлением контейнеров Apache Karaf.

Мне интересно, есть ли возможность реализации проекта с интерфейсом для пользователя, написанном на SpringBoot, бизнес-логика которого использует Apache Camel в качестве маршрутизатора потока информации, в виде бандла (bundle) для Apache Karaf? Запустится ли SpringBoot внутри Karaf-контейнера? Или следует использовать экосистему SpringBoot-а для этих целей, добавляя в нее модуль Apache Camel? Или, возможно, нужно их держать отдельно, связывая посредством Message-брокеров (ActiveMQ) и баз данных?
Очень интересно. Спасибо.
Но есть вопрос: будет ли открыто АПИ для работы с Алисой в качестве клиента? т.е. у меня есть желание использовать Алису в качестве собеседника.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик, Фулстек разработчик
Ведущий