Tomcat初始化方法中如何注入配置檔案內容以及獲取當前伺服器埠號
阿新 • • 發佈:2019-02-18
在使用tomcat監聽器初始化方法時,往往需要注入配置檔案中的某個內容,此時在初始化方法中使用spring註解是不可行的,可以採用Spring工具類獲取Bean,從而得到自己想要的值。這樣做需要新建一個實體類,屬性即為你想要獲取的內容,然後交給spring管理,實體類對應屬性值即為想要從配置檔案中獲取到的內容。舉個列子:
初始化方法:
public void contextInitialized(ServletContextEvent sce) { log.info("從運營平臺獲取H5模板初始化"); ServletContext servletContext = sce.getServletContext(); GetTemplateUtil.getTemplate(servletContext, log); log.info("H5模板獲取結束"); }
實體類:
public class CopyTemplateUrl {
private String saveTemplateUrl;//從運營平臺獲取模板需要的訪問路徑
public String getSaveTemplateUrl() {
return saveTemplateUrl;
}
public void setSaveTemplateUrl(String saveTemplateUrl) {
this.saveTemplateUrl = saveTemplateUrl;
}
}
配置檔案:
spring配置:server.webservice.copyTemplate.url=http://172.0.0.1
<!-- 向監聽器中注入URL -->
<bean id="copyTemplateUrl" class="cn.easier.bill.view.data.CopyTemplateUrl">
<property name="saveTemplateUrl" value="${server.webservice.copyTemplate.url}"/>
</bean>
另外在tomcat啟動時候如果需要獲取當前tomcat埠可以參考一下方法:
/** * 獲取當前伺服器的埠號 * @return */ static String getPort(){ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); Set<ObjectName> objs = null; try { objs = mbs.queryNames(new ObjectName("*:type=Connector,*"), Query.match(Query.attr("protocol"), Query.value("HTTP/1.1"))); } catch (MalformedObjectNameException e) { e.printStackTrace(); } String port = null; for (Iterator<ObjectName> i = objs.iterator(); i.hasNext();) { ObjectName obj = i.next(); obj.getCanonicalName(); port = obj.getKeyProperty("port"); } return port; }