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

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

Запись от anaschu размещена 02.07.2026 в 18:44
Показов 1264 Комментарии 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 вне форума
 
Новые блоги и статьи
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru