Запуск кода в контексте Java WAR из командной строки

Как мне написать код, чтобы разрешить доступ к классу Java в моем веб-приложении из командной строки.

Например. У меня есть класс java с интерфейсом командной строки, который может запускать код в контексте веб-приложения, с доступом к БД и т. д. Я хочу войти на компьютер, на котором размещено мое приложение WARred в tomcat, и иметь возможность взаимодействовать с ним.

С чего мне начать искать?

Спасибо

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
2 355
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Предложение: Класс интерфейса командной строки должен принимать InputStream в качестве ввода и предоставлять OutputStream (он не может жестко закодировать вывод в System.out и ввод в System.in), в который будет записан вывод. Затем вам нужно будет написать класс сервера, который будет прослушивать соединения на определенном порту. Когда соединение установлено, сервер берет InputStream из соединения и передает его классу командной строки, который предоставит OutputStream, в который записанные данные будут переданы клиенту, который установил соединение.

Ответ принят как подходящий

Вы просто хотите запускать файлы классов, которые случайно оказались связанными с WAR, или вы хотите, чтобы они не взаимодействовали с фактическим запущенным экземпляром WAR? Если первое, то WAR - это просто обычный файл Jar, и вы можете выполнять классы в нем, как и в любом другом файле Jar.

Если вы хотите взаимодействовать с запущенной WAR, вы можете взглянуть на JMX.

Все текущие JDK (как минимум 1.5+) поставляются с JMX «бесплатно». Легко создать небольшие классы интерфейса, которые будут использоваться в качестве команд для взаимодействия с вашей WAR.

Тогда вам нужно будет создать программу командной строки, которая подключается к WAR через JMX, или вы можете использовать такой инструмент, как JConsole (который поставляется с JDK, но это графический интерфейс) для взаимодействия с вашим экземпляром. Есть и другие клиенты JMX.

Если ничего из этого не выглядит привлекательным, всегда есть веб-службы.

Спасибо, вот что я искал. Тогда JMX готов к работе. Будем исследовать это. Спасибо

macarthy 20.09.2008 22:35

Что касается «WAR - это просто обычный файл Jar, и вы можете выполнять классы в нем, как и в любом другом файле Jar», это означает, что вы можете сказать «java -cp foo.war ...» или даже «java -jar foo. .war "и пусть он работает как файл jar. Сможете ли вы В самом деле это сделать?

Licky Lindsay 19.08.2009 23:29

Другие вопросы по теме