Как выполнить скрипт (исполняемый класс), расположенный внутри проекта Spring MVC? - PullRequest
3 голосов
/ 23 марта 2012

Я занимаюсь разработкой приложения Spring MVC и использую Maven.В настоящее время я пытаюсь создать несколько «сценариев» Java (я не уверен, что я должен называть их «сценариями», я имею в виду «классы Java с методом main (String [] args)», которые можно вызывать в командестрока), чтобы выполнить некоторую работу с использованием Liquibase.

«Сценарии» будут загружать некоторые контекстные файлы из приложения Spring MVC и иметь доступ к файлам свойств из веб-приложения.Таким образом, они смогут использовать те же параметры подключения к базе данных, что и приложение, и т. Д.

У меня вопрос: как запустить эти сценарии?

Локально я использую Eclipse и запускаю их "скрипты "легко с помощью" Запустить как / Java-приложение ".Но я хочу иметь возможность запускать их и на моем prod-сервере, на котором я не могу использовать eclipse для их запуска.Что я должен сделать, чтобы иметь возможность запускать их там?

Должен ли я экспортировать свое приложение в другой формат, чем .war?Должен ли я создать дополнительный .jar из проекта, чтобы иметь возможность запускать сценарии с использованием "java -jar"?

Должен ли я создать отдельный проект для этих сценариев?Но тогда смогут ли сценарии загрузить требуемые контексты из приложения Spring MVC, расположенного в другом проекте?

Может быть, есть простой способ сделать это, которого я не вижу?

ОБНОВЛЕНИЕ : Одним из способов, с помощью которого я мог бы добиться того, чего я хочу, было бы наличие веб-приложения, предоставляющего веб-службы в качестве двери для выполнения задач.Тогда я мог бы вызвать тех, кто использует wget или что-то еще, в командной строке.Но я бы предпочел иметь возможность посещать занятия напрямую, без необходимости создавать веб-сервисы.

Ответы [ 2 ]

0 голосов
/ 23 марта 2012

(Во-первых, я обнаружил похожий вопрос по SO , который намного проще и проще для понимания, чем мой!)

На самом деле я нашел два способа запуска своих "скриптов" изСам проект веб-приложения:

1) Если на сервере prod установлен Maven, вы можете запускать сценарии из сгенерированной «целевой» папки, задав при этом путь к классу при запуске:

~ cd / path / to / project / target / classes

~ java -classpath ./:/path/to/project/target/myProject-0.0.1-SNAPSHOT/WEB-INF/lib/* com.path.to.scripts.ScriptToRun

2) Также возможно запустить скрипт с самого веб-сервера, где взорвался .war.Я протестировал его, используя Tomcat:

~ cd / path / to / Tomcat / webapps / ROOT / WEB-INF / classes

~ java -classpath ./:/path/to/Tomcat/webapps / ROOT / WEB-INF / lib / * com.path.to.scripts.ScriptToRun

0 голосов
/ 23 марта 2012

Какова цель ваших "сценариев Java"

  1. Периодически делать что-то в bakcground. Вы можете использовать Quartz Framework для автоматического запуска задания. см Кварцевый планировщик
  2. Чтобы убедиться, что что-то работает правильно. Я запустил метод main () в своем классе, чтобы проверить, работает ли что-то правильно, прежде чем я узнал о junit См junit
...