嵌入Tomcat9 执行@PostConstruct
Embeded Tomcat 9 to execute @PostConstruct
我正在创建一个可执行 jar,其中使用嵌入了 Tomcat 9 的 Jsf myfaces 2.3,因此当我执行该 jar 时,它将读取一个 war 文件并将其部署到嵌入式服务器上,它读取 bean 并正确显示内容。
但是 tomcat 似乎没有执行 @PostConstruct 注释。
例如:我在一个bean中有以下内容:
@PostConstruct
public void init() {
System.out.println("init bean called..........");
}
但是它不执行调用 bean 的 void bean。
我已将 javax.annotation-api-1.3.2 jar 包含在 WEB-INF\Lib 文件夹中。
String contextPath = "/Test";
String warFilePath = "D:\Test\embedded\Test.war";
StandardContext ctx = (StandardContext) tomcat.addWebapp(contextPath, warFilePath);
((StandardJarScanner) ctx.getJarScanner()).setScanAllDirectories(true);
((StandardJarScanner) ctx.getJarScanner()).setScanAllFiles(true);
((StandardJarScanner) ctx.getJarScanner()).setScanClassPath(true);
tomcat.start();
tomcat.getServer().await();
控制台上没有错误消息...。根本不执行@PostConstruct init void。任何帮助将不胜感激。
知道了..只需要启用命名即可。
tomcat.enableNaming();
在我的主要空隙中:
Tomcat tomcat = new Tomcat();
tomcat.setBaseDir("temp");
tomcat.setPort(8080);
tomcat.enableNaming();
tomcat.getConnector(); // Tomcat 9 we need to get the connector. it not by default.
String contextPath = "/Test";
String warFilePath = "D:\Test\embedded\Test.war";
tomcat.getHost().setAppBase(".");
StandardContext ctx = (StandardContext) tomcat.addWebapp(contextPath, warFilePath);
((StandardJarScanner) ctx.getJarScanner()).setScanAllDirectories(true);
((StandardJarScanner) ctx.getJarScanner()).setScanAllFiles(true);
((StandardJarScanner) ctx.getJarScanner()).setScanClassPath(true);
tomcat.start();
tomcat.getServer().await();
我正在创建一个可执行 jar,其中使用嵌入了 Tomcat 9 的 Jsf myfaces 2.3,因此当我执行该 jar 时,它将读取一个 war 文件并将其部署到嵌入式服务器上,它读取 bean 并正确显示内容。 但是 tomcat 似乎没有执行 @PostConstruct 注释。
例如:我在一个bean中有以下内容:
@PostConstruct
public void init() {
System.out.println("init bean called..........");
}
但是它不执行调用 bean 的 void bean。
我已将 javax.annotation-api-1.3.2 jar 包含在 WEB-INF\Lib 文件夹中。
String contextPath = "/Test";
String warFilePath = "D:\Test\embedded\Test.war";
StandardContext ctx = (StandardContext) tomcat.addWebapp(contextPath, warFilePath);
((StandardJarScanner) ctx.getJarScanner()).setScanAllDirectories(true);
((StandardJarScanner) ctx.getJarScanner()).setScanAllFiles(true);
((StandardJarScanner) ctx.getJarScanner()).setScanClassPath(true);
tomcat.start();
tomcat.getServer().await();
控制台上没有错误消息...。根本不执行@PostConstruct init void。任何帮助将不胜感激。
知道了..只需要启用命名即可。
tomcat.enableNaming();
在我的主要空隙中:
Tomcat tomcat = new Tomcat();
tomcat.setBaseDir("temp");
tomcat.setPort(8080);
tomcat.enableNaming();
tomcat.getConnector(); // Tomcat 9 we need to get the connector. it not by default.
String contextPath = "/Test";
String warFilePath = "D:\Test\embedded\Test.war";
tomcat.getHost().setAppBase(".");
StandardContext ctx = (StandardContext) tomcat.addWebapp(contextPath, warFilePath);
((StandardJarScanner) ctx.getJarScanner()).setScanAllDirectories(true);
((StandardJarScanner) ctx.getJarScanner()).setScanAllFiles(true);
((StandardJarScanner) ctx.getJarScanner()).setScanClassPath(true);
tomcat.start();
tomcat.getServer().await();