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

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

Запись от anaschu размещена 02.07.2026 в 18:44
Показов 1324 Комментарии 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 вне форума
 
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru