I created a simple SpringBoot application with a Rest controller. When I run it, all the rules work. I would like to deploy it with code in tomkate. I collected the application in war`ku. Created a separate project to raise and deploy this brew:
public class TomcatLauncher { public static void main(String aArgs[]) { try { File catalinaHome = new File("путь"); Tomcat tomcat = new Tomcat(); tomcat.setPort(8080); tomcat.setBaseDir(catalinaHome.getAbsolutePath()); tomcat.getServer().addLifecycleListener(new VersionLoggerListener()); File war = new File("путь до варки"); tomcat.addWebapp("/boot", war.getAbsolutePath()) tomcat.start(); tomcat.getServer().await(); }catch (Exception ex) { ex.printStackTrace(); } } } I start, throws out such an action, but everything works:
.. Запущен томкат тра-та-та запускаем спрингбут ... тратата .. 2016-10-13 14:54:05.202 INFO 12472 --- [ost-startStop-1] osjeaAnnotationMBeanExporter : Registering beans for JMX exposure on startup 2016-10-13 14:54:05.222 INFO 12472 --- [ost-startStop-1] c.aamsystems.SpringBootTestApplication : Started SpringBootTestApplication in 2.758 seconds (JVM running for 7.855) 2016-10-13 14:54:05.243 INFO 12472 --- [ost-startStop-1] oaccC[Tomcat].[localhost].[/boot] : Marking servlet jsp as unavailable 2016-10-13 14:54:05.248 ERROR 12472 --- [ost-startStop-1] oaccC[Tomcat].[localhost].[/boot] : Servlet [jsp] in web application [/boot] threw load() exception java.lang.ClassNotFoundException: org.apache.jasper.servlet.JspServlet at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1284) ~[tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1118) ~[tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:520) ~[tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:501) ~[tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118) ~[tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1061) ~[tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1000) ~[tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4902) [tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5212) [tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152) [tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1403) [tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) [tomcat-embed-core-8.5.4.jar:8.5.4] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_101] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_101] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_101] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_101] If you do addContext ("/ boot", war.getAbsolutePath ()); instead of addWebApp, there is no escape, but there is no application log itself.
JSP I do not have pages and will not.
Questions such:
How to remove this eXception?
Do I choose the right approach for all this business? In the future we plan to create spring boot applications in war.
files and dynamically deploy them with code.
The dependencies in my project tomkata are as follows:
apply plugin: 'java' apply plugin: 'spring-boot' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile('org.springframework.boot:spring-boot-starter-web') } In the springBoot project, in principle, the same, but as I understand it, there should be providedRuntime
Mein application class:
@SpringBootApplication public class SpringBootTestApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(SpringBootTestApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SpringBootTestApplication.class); } }