Spring Annotated Controllers, не работающие с Tomcated Embedded на Heroku
У меня есть пружинные аннотированные контроллеры, которые отлично работают, когда я использую свою WAR, но когда я пытаюсь запускать встроенные, локально и на Heroku, ни один из аннотированных контроллеров не работает. У меня есть несколько страниц, настроенных с помощью mvc:view-controller
и те работают, но ни один из component-scan
контроллеры работают.
package com.myapp.launch;
import java.io.File;
import javax.servlet.ServletException;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.startup.Tomcat;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String webappDirLocation = "src/main/webapp/";
Tomcat tomcat = new Tomcat();
//The port that we should run on can be set into an environment variable
//Look for that variable and default to 8080 if it isn't there.
String webPort = System.getenv("PORT");
if(webPort == null || webPort.isEmpty()) {
webPort = "8080";
}
tomcat.setPort(Integer.valueOf(webPort));
try {
tomcat.addWebapp("/", new File(webappDirLocation).getAbsolutePath());
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("configuring app with basedir: " + new File("./" + webappDirLocation).getAbsolutePath());
try {
tomcat.start();
} catch (LifecycleException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tomcat.getServer().await();
}
}
Вот часть моего весеннего конфига.
<mvc:view-controller path="/" view-name="home"/>
<mvc:view-controller path="/terms" view-name="terms"/>
<mvc:view-controller path="/privacy" view-name="privacy"/>
<context:component-scan base-package="com.myapp.controllers"/>
1 ответ
Я обнаружил, что это произошло из-за того, что мои контроллеры были нестабильны, и эти контроллеры компилировались как часть шага make, когда я запускал tomcat локально, но этот же процесс не запускался, когда я запускал tomcat внедренный. После добавления цели исполнения в мой плагин gmaven, я смог заставить это работать без проблем.
Так как классы были скомпилированы gmaven, tomcat смог их забрать.