📄 requestcontext.java~9~
字号:
/*****************************************************************************
* (C) Copyright 2004 。
* 保留对所有使用、复制、修改和发布整个软件和相关文档的权利。
* 本计算机程序受著作权法和国际公约的保护,未经授权擅自复制或
* 传播本程序的全部或部分,可能受到严厉的民事和刑事制裁,并
* 在法律允许的范围内受到最大可能的起诉。
*/
/*****************************************************************************
* @作者:Golden Peng
* @版本: 1.0
* @时间: 2002-10-08
*/
/*****************************************************************************
* 修改记录清单
* 修改人 :
* 修改记录:
* 修改时间:
* 修改描述:
*
*/
package com.corp.bisc.ebiz.base;
import java.util.*;
import java.sql.*;
import javax.servlet.http.*;
import java.io.*;
import com.corp.bisc.ebiz.exception.*;
import com.corp.bisc.ebiz.member.*;
import com.corp.bisc.ebiz.util.*;
import com.corp.bisc.ebiz.security.*;
/**
* Insert the type's description here.
* Creation date: (2002-5-13 12:30:08)
* @author: Administrator
*/
public class RequestContext extends ObjectBase
{
private static int connectionInUse = 0;
protected HttpServletRequest request = null;
protected HttpServletResponse response = null;
protected ActionDef action;
protected ConfigRepository config;
private TransactionManager transMgr = null;
private AuthenticateProvider authProvider = null;
private Hashtable hashConnection = new Hashtable();
private Connection transConnection = null;
private CmdResult result = new CmdResult("*");
protected int curCommand = 0;
private HttpSession session = null;
private String appName;
private Hashtable files;
private Hashtable parameters;
private String lang = null;
private int transactionStatus = TransactionManager.TRANSACTION_CONTINUE;
private LogManager logManager = LogManager.getManager();
protected User member = null;
private boolean ifmultipart = false;
private boolean pki_signed = true;
protected RequestContext(HttpServletRequest _req , HttpServletResponse _res)
{
request = _req;
response = _res;
}
public void abortTransaction()
{
transactionStatus = TransactionManager.TRANSACTION_ROLLBACK;
}
protected void cleanup()
{
enter("cleanup()");
if (hashConnection.size() != 0)
{
log.warn("DB Connection leak was found!!!");
int nCount = 0;
for(Enumeration e = hashConnection.keys() ; e.hasMoreElements() ; )
{
String key = (String)e.nextElement();
String sDsName=key.substring(0,key.charAt('.') - 1);
nCount = connectionInUse - 1;
connectionInUse--;
log.info("The closed connection id is:->" + conn + "---connection count is:->" + nCount);
config.getConnHandler().closeConnection(conn);
}
hashConnection.clear();
}
leave("cleanup()");
}
public void commitTransaction()
{
transactionStatus = TransactionManager.TRANSACTION_COMMIT;
}
public Connection freeDBConnection(Connection conn)
{
enter("freeDBConnection(Connection)");
freeDBConnection(conn,null);
leave("freeDBConnection(Connection)");
return null;
}
public Connection freeDBConnection(Connection conn,String dsName)
{
enter("freeDBConnection(Connection)");
ActionDef action = getActionDefinition();
String accessKey = null;
CommandMap currCmd = action.getCurrentCommandMap();
int nCount = connectionInUse - 1;
if(currCmd == null)
{
//this is the last free db connection in servlet logging.
accessKey = (dsName == null) ? ".1" : dsName + ".1";
info("Close connection with accessKey:->" + accessKey);
hashConnection.remove(accessKey);
info("The closed connection id is:->" + conn + "---connection count is:->" + nCount);
connectionInUse--;
config.getConnHandler().closeConnection(dsName,conn);
}
else
{
if(dsName == null)
dsName = "";
accessKey = (currCmd.getTransId() == null) ? dsName + ".1" : dsName + "." + currCmd.getTransId();
/*
//we will close the connection if its not a default connection and is transaction end.
if(currCmd.isTransEnd() && (!accessKey.equals("1")))
{
info("Close connection with accessKey:->" + accessKey);
hashConnection.remove(accessKey);
info("The closed connection id is:->" + conn);
config.getConnHandler().closeConnection(conn);
}
*/
//we will close the connection if it is transaction end.
if(currCmd.isTransEnd())
{
info("Close connection with accessKey:->" + accessKey);
hashConnection.remove(accessKey);
info("The closed connection id is:->" + conn + "---connection count is:->" + nCount);
connectionInUse--;
config.getConnHandler().closeConnection(dsName,conn);
}
}
leave("freeDBConnection(Connection)");
return null;
}
protected ActionDef getActionDefinition()
{
return action;
}
public AuthenticateProvider getAuthProvider()
{
AuthenticateProvider authProvider = config.getAuthProvider();
return authProvider;
}
public Object getBinaryParameterValue(String paramName) throws InvalidParameterException
{
Object result = null;
Vector vect = (Vector) parameters.get(paramName);
if(vect == null)
return null;
String value =(String) vect.elementAt(0);
ParamChecker checker = action.getParamChecker(paramName);
if (checker == null)
result = value;
else
result = checker.getValidValue(value);
return result;
}
public Object[] getBinaryParameterValues(String paramName)
throws Exception {
System.out.println( "In Request Context.getBinaryParameterValues.........");
Vector vect = null;
String[] result = null;
vect = (Vector) parameters.get(paramName);
if (vect == null)
return null;
Object[] values = vect.toArray();
ParamChecker checker = action.getParamChecker(paramName);
if (values == null)
return null;
int len = values.length;
System.out.println( "Parameter Names:" + paramName);
if (checker == null){
System.out.println( "Parameter number:" + len );
result = new String[len];
System.out.println( "Don't check.........");
for (int i = 0; i < len; i++) {
String value = null ;
if ( values[i] instanceof String ){
System.out.println( "Input data is String ............" );
result[i] = (String) values[i];
}
else{
System.out.println( "Input data isn't String ............" );
}
}
// result = values;
}
else {
System.out.println( "Checking.........");
result = new String[len];
for (int i = 0; i < len; i++) {
String value = (String) values[i];
result[i] = value;
// result[i] = checker.getValidValue(value);
}
}
System.out.println( "End Request Context.getBinaryParameterValues.........");
return result;
}
/**
* 此处插入方法描述。
* 创建日期:(2002-7-1 21:04:27)
* @return java.lang.String
*/
public String getClientCert() {
String result = null;
try{
result = (String)request.getSession().getAttribute("clientCert");
}catch(Exception e){
System.out.println(e);
}
return result;
}
protected CmdResult getCmdResult()
{
return result;
}
public int getCommandName()
{
return curCommand;
}
public Connection getDBConnection() throws SQLException,PortalException
{
return getDBConnection(null);
}
public Connection getDBConnection(String dsName) throws SQLException, PortalException
{
enter("getDBConnection(String)");
//此段程序利用了TransactionManager的概念,可似乎不完善
//暂时改成只是利用cmdmap 的transaction id来进行判断
//日后对事务处理需要重新考虑
/*
TransactionManager myTransMgr = getTransManager();
Connection conn = null;
boolean isTransConnection = myTransMgr.isInTransaction() && !myTransMgr.isXATransaction;
if (isTransConnection && transConnection != null)
{
conn = transConnection;
}
if (conn == null)
{
ConnPoolHandler handler = config.getConnHandler();
if (dsName == null)
conn = handler.getConnection();
else
conn = handler.getConnection(dsName);
if (isTransConnection)
transConnection = conn;
hashConnection.put(conn , conn);
}
*/
/*
Connection conn = null;
ActionDef action = getActionDefinition();
CommandMap currCmd = action.getCurrentCommandMap();
//if(!currCmd.isTransBegin()){
if(transConnection != null){
if(!transConnection.isClosed())
conn = transConnection;
else
transConnection = null;
}
//}
if (conn == null)
{
ConnPoolHandler handler = config.getConnHandler();
if (dsName == null)
conn = handler.getConnection();
else
conn = handler.getConnection(dsName);
if (currCmd.isTransBegin())
transConnection = conn;
if(dsName == null)
hashConnection.put(conn , conn);
else
hashConnection.put(dsName,conn);
}
*/
Connection conn = null;
ActionDef action = getActionDefinition();
CommandMap currCmd = action.getCurrentCommandMap();
String accessKey = (currCmd == null || currCmd.getTransId() == null) ? "1" : currCmd.getTransId();
//use transid and dsName to build accessKey
accessKey = (dsName == null) ? "." + accessKey : dsName + "." + accessKey;
conn = (Connection)hashConnection.get(accessKey);
ConnPoolHandler handler = config.getConnHandler();
if(conn == null || conn.isClosed())
{
if(conn == null)
info("Get a new connection with accessKey:->" + accessKey);
else
info("Get a new connection because the cache has been closed. accessKey:->" + accessKey);
if(dsName == null)
conn = handler.getConnection();
else
conn = handler.getConnection(dsName);
hashConnection.put(accessKey, conn);
int nCount = connectionInUse + 1;
info("The connection id is:->" + conn + "--- Connection in use is:->" + nCount);
connectionInUse++;
}
else
info("use a cache connection with accessKey:->" + accessKey);
leave("getDBConnection(String)");
return conn;
}
/**
* 此处插入方法描述。
* 创建日期:(2002-5-22 19:43:25)
* @param name java.lang.String
* @param file java.io.File
*/
public FileObject getFile(String name) {
FileObject file = null;
if(files != null)
file = (FileObject) files.get(name);
return file;
}
/**
* 此处插入方法描述。
* 创建日期:(2002-5-22 20:17:50)
* @return java.util.Hashtable
*/
public Enumeration getFileParaNames() {
if(files == null)
return null;
return files.keys();
}
public InputStream getInputStream() throws IOException
{
return request.getInputStream();
}
public String getLanguage()
{
if (lang == null)
{
String localeStr = null;
Cookie cookie[] = request.getCookies();
LangManager langMgr = config.getLangManager();
if (cookie.length != 0)
{
for (int i = 0; i < cookie.length; i++)
{
if (cookie[i].getName().equalsIgnoreCase("language"))
localeStr = cookie[i].getValue();
}
}
if (localeStr == null)
{
localeStr = request.getHeader("Accept-Language");
if (localeStr != null)
{
StringTokenizer st = new StringTokenizer(localeStr, ",");
while(st.hasMoreElements())
{
localeStr = (String) st.nextElement();
if (localeStr != null)
{
localeStr = localeStr.trim();
if (langMgr.getLangConfig(localeStr) != null)
break;
}
}
}
}
if (localeStr == null)
localeStr = langMgr.getDefaultLang();
lang = localeStr;
}
return lang;
}
/**
* 此处插入方法描述。
* 创建日期:(2002-5-22 16:03:47)
* @return org.apache.log4j.Category
*/
public org.apache.log4j.Category getLogger() {
return log;
}
public LogManager getLogManager()
{
return logManager;
}
public String getMessage(String id)
{
return null;
}
public Object getNormalParameterValue(String paramName) throws InvalidParameterException
{
Object result = null;
String value = request.getParameter(paramName);
ParamChecker checker = action.getParamChecker(paramName);
if (checker == null)
result = value;
else
result = checker.getValidValue(value);
return result;
}
public Object[] getNormalParameterValues(String paramName)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -