web上下文监听器ServletContextListener
1 package com.liveyc.common.listener; import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils; import com.liveyc.common.utils.ApplicationContextHelper;
import com.liveyc.common.utils.Constants;
import com.liveyc.common.utils.GetConnection;
import com.liveyc.common.utils.ServiceHelper; public class ApplicantListener implements ServletContextListener{ private static WebApplicationContext webApplicationContext;
private static ApplicationContextHelper helper = new ApplicationContextHelper();
@Override
public void contextInitialized(ServletContextEvent sce) {
// TODO Auto-generated method stub
webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());
helper.setApplicationContext(webApplicationContext);
Constants.WEB_APP_CONTEXT = webApplicationContext; GetConnection getConnection = ServiceHelper.getgetConnection();
Constants.CONN1 = getConnection.conn1();
Constants.CONN2 = getConnection.conn2();
} @Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub } }

web.xml配置

spring注入

package com.liveyc.common.utils; import java.net.URI; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.server.namenode.ha.proto.HAZKInfoProtos;
import org.apache.hadoop.ipc.Client;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;
import org.springframework.web.bind.annotation.RequestMapping; import com.google.protobuf.InvalidProtocolBufferException; public class GetConnection { private static final Log LOG = LogFactory.getLog(HdfsUtils.class); public Configuration conn1(){
Configuration conf = new Configuration();
System.setProperty("HADOOP_USER_NAME", Constants.HDFS_USER_NAME);
//String hostname = getHostname(Constants.ZOOKEEPER_IP, Constants.ZOOKEEPER_PORT, Constants.ZOOKEEPER_TIMEOUT, Constants.DATA_DIR);
String hostname = SysProperties.getString("hostname1");
if (hostname != null && hostname != "") {
conf.set("fs.default.name", "hdfs://" + hostname + ":" + Constants.HDFS_PROT); // active节点
// 或者通过nameservice的名字直接连接 ,不用通过zookeeper获取active状态的节点
// conf.set("fs.default.name", "hdfs://" + nameservice1 + ":" +
// HDFS_PROT); // active节点
conf.set("dfs.socket.timeout", "900000");
conf.set("dfs.datanode.handler.count", "20");
conf.set("dfs.namenode.handler.count", "30");
conf.set("dfs.datanode.socket.write.timeout", "10800000"); } else {
conf.set("fs.default.name", Constants.HDFS_ADDR); // 如果没配HA默认使用配置的master
}
Client.setConnectTimeout(conf, Constants.HDFS_TIMEOUT); // 超时时间
return conf;
} public Configuration conn2(){
Configuration conf = new Configuration();
System.setProperty("HADOOP_USER_NAME", Constants.HDFS_USER_NAME);
//String hostname = getHostname(Constants.ZOOKEEPER_IP, Constants.ZOOKEEPER_PORT, Constants.ZOOKEEPER_TIMEOUT, Constants.DATA_DIR);
String hostname = SysProperties.getString("hostname2");
if (hostname != null && hostname != "") {
conf.set("fs.default.name", "hdfs://" + hostname + ":" + Constants.HDFS_PROT); // active节点
// 或者通过nameservice的名字直接连接 ,不用通过zookeeper获取active状态的节点
// conf.set("fs.default.name", "hdfs://" + nameservice1 + ":" +
// HDFS_PROT); // active节点
conf.set("dfs.socket.timeout", "900000");
conf.set("dfs.datanode.handler.count", "20");
conf.set("dfs.namenode.handler.count", "30");
conf.set("dfs.datanode.socket.write.timeout", "10800000");
} else {
conf.set("fs.default.name", Constants.HDFS_ADDR); // 如果没配HA默认使用配置的master
}
Client.setConnectTimeout(conf, Constants.HDFS_TIMEOUT); // 超时时间
return conf;
} public static boolean getActive(){
Configuration conf = Constants.CONN1;
FileSystem fs = null;
try {
fs = FileSystem.get(URI.create(Constants.hdfsRootPath), conf);
FileStatus[] stats = fs.listStatus(new Path(Constants.hdfsRootPath));
} catch (Exception e) {
return false;
}
return true;
} public static Configuration getconf(){
Configuration conf = new Configuration();
if(GetConnection.getActive()){
conf = Constants.CONN1;
}else{
conf = Constants.CONN2;
}
return conf;
}
/**
*
* @Title: getHostname
* @Description: 获取active节点(集群配置HA的前提下)
* @param ZOOKEEPER_IP
* zookeeperip
* @param ZOOKEEPER_PORT
* zookeeper端口号
* @param ZOOKEEPER_TIMEOUT
* 超时时间
* @param DATA_DIR
* HA在zookeeper下的路径
* @return
*/
public String getHostname(String ZOOKEEPER_IP, int ZOOKEEPER_PORT, int ZOOKEEPER_TIMEOUT, String DATA_DIR) {
String hostname = null;
Watcher watcher = new Watcher() {
@Override
public void process(org.apache.zookeeper.WatchedEvent event) {
LOG.info("event:" + event.toString());
}
};
ZooKeeper zk = null;
byte[] data1 = null;
String[] iparr = ZOOKEEPER_IP.split(";");
for (String ip : iparr) {
try {
zk = new ZooKeeper(ip + ":" + ZOOKEEPER_PORT, ZOOKEEPER_TIMEOUT, watcher);
data1 = zk.getData(DATA_DIR, true, new Stat());
} catch (Exception e) {
LOG.info("This ip is not active..." + ip);
continue;
}
if (data1 != null) {
LOG.info("This ip is normal..." + ip);
try {
hostname = HAZKInfoProtos.ActiveNodeInfo.parseFrom(data1).getHostname();
} catch (InvalidProtocolBufferException e) {
LOG.error(e);
}
return hostname;
}
}
return hostname;
}
}
web上下文监听器ServletContextListener的更多相关文章
- spring中的web上下文,spring上下文,springmvc上下文区别(超详细)
web上下文(Servlet context),spring上下文(WebApplication Context),springmvc上下文(mlWebApplicationCont)之间区别. 上下 ...
- SpringMVC4零配置--Web上下文配置【MvcConfig】
与SpringSecurity的配置类似,spring同样为我们提供了一个实现类WebMvcConfigurationSupport和一个注解@EnableWebMvc以帮助我们减少bean的声明. ...
- Servlet之ServletContext获取web上下文路径、全局参数、和Attribute(域)
1)获取web上下文路径 public void doGet(HttpServletRequest request, HttpServletResponse response) throws Serv ...
- Java Web(五) 监听器Listener
监听器概述 在上一篇里介绍了过滤器Filter,而Listener是Servlet的另一个高级特性.Listener用于监听Java Web程序中的事件,例如创建,修改,删除Session,reque ...
- web.xml 监听器
一.作用 Listener就是在application,session,request三个对象创建.销毁或者往其中添加修改删除属性时自动执行代码的功能组件. Listener是Servlet的监听器, ...
- web 自定义监听器中设置加载系统相关的静态变量及属性
直接上代码: 在src下新建一个StartListener 实现接口ServletContextListener,: /** * @Title:StartListener.java * @Packag ...
- 【java web】监听器listener
一.简介 Java的监听器,也是系统级别的监听.监听器随web应用的启动而启动.Java的监听器在c/s模式里面经常用到,它会对特定的事件产生产生一个处理.监听在很多模式下用到,比如说观察者模式,就是 ...
- web的监听器,你需要知道这些...
一.简介 Listener是Servlet规范的另一个高级特性,它用于监听java web程序的事件,例如创建.修改.删除session,request,context等,并触发相应的处理事件,这个处 ...
- 通过web.xml监听器启动main方法
web.xml中添加要启动的类 <listener> <listener-class>server.NettyServer</listener-class> < ...
随机推荐
- QMultiMap使用
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QMultiMap使用 本文地址:http://techieliang.com/201 ...
- beta-1 阶段各组员的贡献分分配
小组名称:飞天小女警 项目名称:礼物挑选小工具 小组成员:沈柏杉(组长).程媛媛.杨钰宁.谭力铭 bera-1阶段各组员的贡献分分配如下: 姓名 团队贡献分 谭力铭 5.2 沈柏杉 5.1 程媛媛 4 ...
- 新浪 ip 地址库
API地址:http://int.dpool.sina.com.cn/iplookup/iplookup.php 帮助 1 2 3 4 5 6 7 8 function get_location($i ...
- PHP面向对象之接口
接口(interface)技术 什么是接口? 先看抽象类: abstract class 类名 { 属性1: 属性2: ..... 非抽象方法1: 非抽象方法2: ...... 抽象方法1: 抽 ...
- Spring-MVC理解之二:前置控制器
原文链接:http://www.cnblogs.com/brolanda/p/4265749.html 一.前置控制器配置与讲解 上篇中理解了IOC容器的初始化时机,并理解了webApplicatio ...
- poj1958——Strange Towers of Hanoi
The teacher points to the blackboard (Fig. 4) and says: "So here is the problem: There are thre ...
- Cycle Sort (交换次数最少的排序)
该算法的效率并不高.但是却提供了一个很好的思路.如何让一个序列在最小交换次数下实现有序. Cycle Sort 翻译成中文是 圈排序. 这个圈在于需要交换的数据形成圈. 具体一点: 如: Array ...
- 【刷题】LOJ 6038 「雅礼集训 2017 Day5」远行
题目描述 Miranda 生活的城市有 \(N\) 个小镇,一开始小镇间没有任何道路连接.随着经济发现,小镇之间陆续建起了一些双向的道路但是由于经济不太发达,在建设过程中,会保证对于任意两个小镇,最多 ...
- 洛谷 P1023 税收与补贴问题 (2000NOIP提高组)
洛谷 P1023 税收与补贴问题 (2000NOIP提高组) 题意分析 一开始没理解题意.啰啰嗦嗦一大堆.看了别人的题解才明白啥意思. 对于样例来说,简而言之: 首先可以根据题目推算出来 28 130 ...
- Mac连接HDMI后没有声音
Mac连接HDMI后,会自动切换到HDMI设备进行发声,若HDMI设备没有声音,则不会发声.必须切换回内置扬声器才能有声音,或者拔出HDMI设备. 系统偏好设置 - 声音 - 输出 - 选择内置扬声 ...
1 package com.liveyc.common.listener;
import javax.servlet.ServletContextEvent;