I'm interested in hearing out what's out there in terms of tips and tricks on deploying and maintaining a Java web application whilst keeping agile. I'm running solo on a startup project I'd like to maintain.
My tech stack is fairly simple:
- Spring MVC
- Spring Core for IOC (Inversion of Control)
- JPA/Hibernate for transctional processing
all of this using a single instance of Tomcat as a container and MySQL to keep my states.
So my questions are:
How is it usually structured? I currently have three JAR/WAR projects:
- the delegate [JAR] - containing my interfaces,
- the implementation [JAR] - implementing my interfaces (above), and
- the web application [WAR] - which is my Spring MVC web application depending on just the implementation
These are then wrapped into a WAR file which is then deployed to my Tomcat container. Is this recommended?
Is there a way to hot deploy? I've seen what Heroku does by making your project self-runnable (by including Jetty/Tomcat within the project itself), pulling the update via a git repository and reruns the project for you. I thought the usual modus operandi is running mvn package and move it to the container (which is already switched on).