...
代码块 |
---|
import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import smartbi.framework.rmi.RMIModule; import smartbi.state.StateModule; import smartbi.usermanager.UserManagerModule; public class SmartbiCheckLoginFilter implements Filter { @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub //ScheduleTaskModule stm = ScheduleTaskModule.getInstance(); HttpServletRequest req = (HttpServletRequest) request; if("/ServerStatus".equals(req.getServletPath()) || "/MobileServerStatus".equals(req.getServletPath())) { UserManagerModule userManagerModule = UserManagerModule.getInstance(); boolean isOk = false; isOk = userManagerModule.loginFromDB("xxx", "xxx"); userManagerModule.logout(); req.setAttribute("loginStatus", isOk); } chain.doFilter(request, response); } @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } } |
...
3 业务库、各种池是否正常
相当于smartbi服务器能否连接到业务库、各种池。这里的做法是在该servlet中,遍历所有的数据源,然后根据数据源调用Smartbi的连接池类ConnectionPool的getConnection方法即可。参考附件扩展包中的ServerStatus.java文件。
...
代码块 |
---|
private final String checkDataSource(String dsId){
DataSource dbDs = FreeQueryDAOFactory.getDataSourceDAO().load(dsId);
Connection conn = null;
String dbStatus = "数据库正常";
try {
conn = ConnectionPool.getInstance().getConnection(dbDs);
} catch (Exception e) {
System.out.println("ServerStatus监测到异常:"+dsId+e.toString());
logger.debug("ServerStatus监测到异常:"+dsId+e.toString());
dbStatus = "数据库异常";
} finally {
try {
if (conn != null)
conn.close();
if (!dbDs.getUrl().startsWith("JNDI:"))
ConnectionPool.getInstance().closePool(dbDs);
} catch (Throwable e) {
System.out.println("");
}
}
return dbStatus;
} |