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> < ...
随机推荐
- 如何在一台 web 服务器上注册CA证书
试验环境介绍(CA的主机为192.168.23.10.httpd的主机为:192.168.23.11) 1:新建一台web服务器,主机名为www yum install -y httpd 2:生成 ...
- python的N个小功能之正则匹配
1.. 匹配任意除换行符“\n”外的字符:2.*表示匹配前一个字符0次或无限次:3.+或*后跟?表示非贪婪匹配,即尽可能少的匹配,如*?重复任意次,但尽可能少重复,惰性匹配:4. .*? 表示匹配任意 ...
- jquery中的append功能相当于剪切的作用 将原来的元素剪切走
jquery中的append功能相当于剪切的作用 将原来的元素剪切走
- Moya/RxSwift/ObjectMapper/Alamofire开发
废话不多说直接上代码 // // MoyaNetWorking.swift // GreenAir // // Created by BruceAlbert on 2017/9/18. // Copy ...
- 【Java】数据库查询的数据直接以指定文件类型下载到本地(弹出下载框)
欲实现的功能目标:当点击下图的导出数据文件时弹出文件下载框,默认csv格式,用户自定义下载的本地路径 遇到的问题: 1.项目之前做过一次下载,但是是使用了本地文件模板.用输入流读取文件模板,插入数据, ...
- 【转】小心stringstream.str()字符串用法的陷阱
--------------------- 作者:心中那自由的世界 来源:CSDN 原文:https://blog.csdn.net/119365374/article/details/7744678 ...
- ubuntu成功安装搜狗输入法
在安装之前,我们要先了解一个事实,那就是linux下安装软件和Windows是非常不同的,并不是简单地双击安装包就可以安装了.linux很多软件都有自己的一个依赖源,如果不先安装好这些依赖源,你是无法 ...
- ans menu list
ans menu list 1. 系统配置 a) 基本设置 i. NTP ii. 配置模式 iii. 主机信息 b) 高可用性 i. 节点 ii. 路由监视器 iii. 故障转移接口群 c) 设备标识 ...
- Yarn 模式 与 电影受众分析系统
yarn模式分为两种模式: 一.Yarn-cluster模式 1.通过spark-submit提交spark jar包(Application),与RM进行通信请求启动AM 2.RM接收到请求之后,会 ...
- HDU--1874
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 分析:SPFA|Dijkastra. #include<iostream> #inc ...