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;
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值