Форум программистов, компьютерный форум, киберфорум
anaschu
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

rest api anylogic - выполнение модели на своём русском сайте

Запись от anaschu размещена 02.07.2026 в 18:44
Показов 1218 Комментарии 1

Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы


Всем привет! Хочу поделиться свежим (и довольно потными) кейсом того, как мы с нейросетью за два дня прошли путь от полного нуля и зависших плагинов до готового, работающего в продакшене веб-сервиса, который дергает симуляции AnyLogic Cloud.

Статья будет полезна всем, кто ковыряет имитационное моделирование, пытается связать AnyLogic с веб-интерфейсами на Java и сталкивается с суровыми реалиями блокировок и капризов IDE.

День 1. Попытка №1: Официальный Java Client и война с VS Code

Задача: Сделать простейший сайт (HTML-страница с кнопкой), при нажатии на которую локальный Java-сервер отправляет запрос в AnyLogic Cloud, запускает симуляцию и возвращает результат на фронтенд.

Скачали официальную библиотеку anylogic-cloud-client-8.5.0.jar. И тут начался классический ад новичка в VS Code:
  1. Встроенный компилятор в упор отказывался видеть пакет
    Code
    1
    
    com.anylogic.cloud.client
    , хотя jar-ник лежал в корне и был добавлен в Referenced Libraries. Вся верхняя часть кода горела красным.
  2. Попробовали перевести проект на Maven, создали pom.xml, прописали локальный путь
    Code
    1
    
    <systemPath>
    к библиотеке.
  3. После очистки кэша языка (Java: Clean Java Language Server Workspace) расширение RedHat Java в VS Code ушло в глубокую депрессию, выдав ошибку: "Couldn't start client Java Language Server". Кнопочки Run/Debug благополучно испарились.
  4. Попытки скомпилировать вручную через встроенный PowerShell (
    Code
    1
    
    javac -cp "..." MainServer.java
    ) ломались из-за того, что PowerShell в Windows специфически хавает точки с запятой, кавычки и маски вроде
    Code
    1
    
    "*"
    .

Итог дня: Написали простейший сервер-заглушку на чистом
Code
1
com.sun.net.httpserver
, который отдавал HTML и имитировал задержку вычислений через
Code
1
Thread.sleep(3000)
. Сервер завелся локально на порту 8080. Кнопка нажималась, фейковый результат выдавался, но связи с AnyLogic не было.

День 2. Драма с VPN, переход на чистый REST API и Docker

На второй день мы решили полностью отказаться от капризного JAR-файла AnyLogic. Зачем тащить тяжелую внешнюю либу, если AnyLogic Cloud прекрасно работает через обычные HTTP-запросы и JSON?

Решение: Переписали MainServer.java на встроенный в современную Java класс
Code
1
HttpClient
. Код стал чистым, коротким, с использованием лямбда-выражений для контекстов сервера. Запрос на запуск симуляции отправлялся методом POST на адрес:
Code
1
https://anylogic.com{model_id}/run/simulation
Запускаем ручками в терминале... и получаем моментальный Ошибка бэкенда: null или java.net.ConnectException.

В чем был подвох? Выяснилось, что провайдер жестко блокирует адреса AnyLogic Cloud. Через браузер с включенным VPN модель открывается, а локальный Java-сервер, естественно, стучится в сеть напрямую и упирается в глухую стену.

Выход в продакшен: Render.com и Docker

Раз локально из-за блокировок запустить не получается, а Google Cloud требует зарубежную карту даже для бесплатных лимитов, мы пошли на Render.com (отличный бесплатный хостинг, где карту не просят).

Написали Dockerfile:
Code
1
2
3
4
5
6
7
FROM eclipse-temurin:21-jdk-alpine
WORKDIR /app
COPY MainServer.java /app/MainServer.java
COPY index.html /app/index.html
RUN javac MainServer.java
EXPOSE 8080
CMD ["java", "MainServer"]
Нюанс: Сначала использовали базовый образ с jre, но сборка упала с ошибкой 127 (
Code
1
javac: not found
). Вовремя вспомнили, что JRE умеет только запускать, а для компиляции внутри Docker нужен именно jdk-образ.

Залили всё на GitHub, подключили репозиторий к Render. Облако само развернуло Docker-контейнер на сервере во Франкфурте (Германия). Поскольку там никаких блокировок нет, наш бэкенд получил прямую связь с серверами AnyLogic! Получили рабочую ссылку вида
Code
1
https://onrender.com
.

Эврика! Идеальное решение через iframe

Когда всё заработало, пришло осознание: если наша цель — показать пользователю (или, например, ученику на занятии) красивую живую 2D/3D анимацию модели, дать ему возможность крутить ползунки и менять параметры «на лету», то городить свой бэкенд на Java с API-ключами вообще... не нужно!

AnyLogic Cloud позволяет встраивать интерактивный плеер модели прямо внутрь любого сайта.
Мы полностью очистили файл index.html, выкинули весь сложный Java-код обработки кликов и вставили туда обычный HTML-тег <iframe>:

Code
1
2
3
4
5
6
<iframe 
    width="100%" 
    height="700px" 
    src="https://anylogic.com" 
    allowfullscreen>
</iframe>
Сделали за 5 секунд Commit & Push через GitHub Desktop. Облако Render автоматически обновило проект.

Финальный результат:
Получился полноценный, красивый сайт в реальном интернете. При заходе на него по центру разворачивается родной интерактивный плеер AnyLogic Cloud (тестировали на официальной модели AGV Charging).

Для зарубежных пользователей (например, студентов или учеников из США) всё грузится моментально, плеер работает без VPN, можно запускать эксперименты и смотреть анимацию логистики прямо внутри кастомной страницы! И всё это на 100% бесплатно, легально и доступно даже на бесплатной версии AnyLogic PLE.

Вот такой путь от "почему не компилируется jar" до изящного iframe-решения в Docker-контейнере. Если у кого-то возникнут вопросы по связке AnyLogic с веб-хостингами — велкам в комментарии, разберем!
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
  1. Старый комментарий
    Аватар для Usaga
    Встроенный компилятор в упор отказывался видеть пакет
    В VS Code нет никакого встроенного компилятора.

    Попытки скомпилировать вручную через встроенный PowerShell
    В VS Code нет никакого встроенного PowerShell.

    В чем был подвох? Выяснилось, что провайдер жестко блокирует адреса AnyLogic Cloud.
    А точно провайдер вообще слышал, что такое AnyLogic, а не сам AnyLogic отпинывает россиян?)

    FROM eclipse-temurin:21-jdk-alpine
    Т.е. ты решил собрать образ с компилятором Джавы, который каждый раз при запуске будет собирать приложение? И пофиг сколько такой образ весить будет?

    Нюанс: Сначала использовали базовый образ с jre, но сборка упала с ошибкой 127 (
    Это не нюанс, это непонимание, что JRE не содержит никаких компиляторов. Он только для исполнения готовых JAR'ов.

    Вот такой путь от "почему не компилируется jar" до изящного iframe-решения в Docker-контейнере.
    Изящным это решение назвать затруднительно.
    Запись от Usaga размещена 04.07.2026 в 11:53 Usaga на форуме
 
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru