1. 程式人生 > >Tomcat初始化方法中如何注入配置檔案內容以及獲取當前伺服器埠號

Tomcat初始化方法中如何注入配置檔案內容以及獲取當前伺服器埠號


在使用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;
	}
}

配置檔案:

server.webservice.copyTemplate.url=http://172.0.0.1
spring配置:
<!-- 向監聽器中注入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;
}