亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嵌入Tomcat 9執行@PostConstruct

嵌入Tomcat 9執行@PostConstruct

心有法竹 2023-09-27 16:44:12
我正在創建一個可執行 jar,其中使用嵌入了 Tomcat 9 的 Jsf myfaces 2.3,因此當我執行該 jar 時,它將讀取一個 war 文件并將其部署在嵌入式服務器上,它讀取 bean 并正確顯示內容。但是tomcat似乎沒有執行@PostConstruct注釋。例如:我在 bean 中有以下內容:    @PostConstruct    public void init() {        System.out.println("init bean called..........");    }但它不執行被調用的 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。任何幫助將不勝感激。
查看完整描述

1 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

明白了..只需要啟用命名即可。


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();


查看完整回答
反對 回復 2023-09-27
  • 1 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號