Как я могу создать исполняемые фляги со встроенным Tomcat 9? - PullRequest
0 голосов
/ 02 ноября 2018

Кто-нибудь пробовал плагин для создания исполняемого war / jar с использованием Tomcat 9?

Я попытался сделать это, однако натолкнулся на:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.catalina.startup.Catalina.setConfig(Ljava/lang/String;)V
  at org.apache.tomcat.maven.runner.Tomcat7Runner.run(Tomcat7Runner.java:240)
  at org.apache.tomcat.maven.runner.Tomcat7RunnerCli.main(Tomcat7RunnerCli.java:204)

Я посмотрел на источник и изменил Catalina.setConfig () на Catalina.setConfigFile (), основываясь на документации здесь . После этого .extract dir просто пуст:

использовать extractDirectory: .extract populateWebAppWarPerContext warValue: ROOT.war | ROOT populateWebAppWarPerContext contextValue / warFileName: ROOT / ROOT.war webappWarPerContext entry ключ / значение: ROOT / ROOT.war развернуть в файл: .extract / webapps / ROOT.war Исключение в потоке "main" java.lang. Исключение: FATAL: невозможно создавать каталоги: .extract / webapps в org.apache.tomcat.maven.runner.Tomcat7Runner.extract (Tomcat7Runner.java:586) в org.apache.tomcat.maven.runner.Tomcat7Runner.run (Tomcat7Runner.java:204) в org.apache.tomcat.maven.runner.Tomcat7RunnerCli.main (Tomcat7RunnerCli.java:204)

.... хотя в файле * -exec-war.jar есть ROOT.war, server.xml, web.xml.

Есть ли лучший способ создания exec-jar-файлов со встроенным tomcat 9?

1 Ответ

0 голосов
/ 05 ноября 2018

Для тех, кто ищет решение, было довольно просто проверить код для плагина и внести несколько изменений, чтобы заставить его работать. А именно: Обновите POM, чтобы изменить зависимость от Tomcat 9 Исправьте ошибки компиляции, которые обычно происходят из-за устаревших методов. Поиск по этим методам можно найти здесь . Например:

-                container.setConfig( serverXml.getAbsolutePath() );
+                container.setConfigFile( serverXml.getAbsolutePath() );

... и ...

-            staticContext.addServletMapping( "/", "staticContent" );
+            staticContext.addServletMappingDecoded( "/", "staticContent" );

Есть несколько других, но, как правило, не трудно решить. После этого я обновил pom своего приложения для использования измененной версии и смог сгенерировать exec jar Tomcat 9.

Мне бы очень хотелось услышать, что здесь делают другие. Я знаю, что некоторые программно инициализируют Tomcat с помощью экземпляра new Tomcat(), однако любопытно, какие еще готовые решения существуют. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...