en = context.getInitParameterNames();
StringBuilder info = new StringBuilder("Servlet Context Init Parameters: ")
.append(context.getServletContextName());
while (en.hasMoreElements())
{
String name = en.nextElement();
String value = context.getInitParameter(name);
System.setProperty(name, value);
info.append("\n").append(name).append("=").append(value);
}
String propertyFile = Ini.getFileName(false);
File file = new File(propertyFile);
if (!file.exists())
{
throw new java.lang.IllegalStateException("idempiere.properties is not setup. PropertyFile="+propertyFile);
}
try
{
s_initOK = Adempiere.startup(false);
}
catch (Exception ex)
{
log.log(Level.SEVERE, "startup", ex);
}
if (!s_initOK)
return false;
// Logging now initiated
if (log.isLoggable(Level.INFO)) log.info(info.toString());
//
MClient client = MClient.get(Env.getCtx(), 0);
MSystem system = MSystem.get(Env.getCtx());
client.sendEMail(client.getRequestEMail(),
"Server started: " + system.getName() + " (" + WebUtil.getServerName() + ")",
"ServerInfo: " + context.getServerInfo(), null);
return s_initOK;
} // initWeb
/**
* Get Base Directory entry.
*
* /adempiere/
* @param entry file entry or path
* @return url to entry in base directory
*/
public static String getBaseDirectory (String entry)
{
StringBuilder sb = new StringBuilder (DIR_BASE);
if (!entry.startsWith("/"))
sb.append("/");
sb.append(entry);
return sb.toString();
} // getBaseDirectory
/**
* Get Image Directory entry.
*
* /adempiere/images
* @param entry file entry or path
* @return url to entry in image directory
*/
public static String getImageDirectory(String entry)
{
StringBuilder sb = new StringBuilder (DIR_BASE);
sb.append("/").append(DIR_IMAGE);
if (!entry.startsWith("/"))
sb.append("/");
sb.append(entry);
return sb.toString();
} // getImageDirectory
/**
* Get Store Directory entry.
*
* /adempiere/store
* @param entry file entry or path
* @return url to entry in store directory
*/
public static String getStoreDirectory(String entry)
{
StringBuilder sb = new StringBuilder (DIR_BASE);
sb.append("/").append(DIR_STORE);
if (!entry.startsWith("/"))
sb.append("/");
sb.append(entry);
return sb.toString();
} // getStoreDirectory
/**
* Get Logo Path.
*
* /adempiere/LogoSmall.gif
* @return url to logo
*/
public static String getLogoURL()
{
return getBaseDirectory(LOGO);
} // getLogoPath
/**
* Get Logo Image HTML tag.
* @return Image
*/
public static img getLogo()
{
return new img(getLogoURL()).setAlign(AlignType.RIGHT)
.setAlt("© Jorg Janke/adempiere");
} // getLogo
/**
* Get Stylesheet Path.
*
* /adempiere/standard.css
* @return url of Stylesheet
*/
public static String getStylesheetURL()
{
return getBaseDirectory(STYLE_STD);
} // getStylesheetURL
/**
* Get Cell Content
* @param content optional content
* @return string content or non breaking space
*/
public static String getCellContent (Object content)
{
if (content == null)
return NBSP;
String str = content.toString();
if (str.length() == 0)
return NBSP;
return str;
} // getCellContent
/**
* Get Cell Content
* @param content optional content
* @return string content
*/
public static String getCellContent (int content)
{
return String.valueOf(content);
} // getCellContent
/**
* Dump Servlet Config
* @param config config
*/
public static void dump (ServletConfig config)
{
if (log.isLoggable(Level.CONFIG))log.config("ServletConfig " + config.getServletName());
if (log.isLoggable(Level.CONFIG))log.config("- Context=" + config.getServletContext());
if (!CLogMgt.isLevelFiner())
return;
boolean first = true;
Enumeration e = config.getInitParameterNames();
while (e.hasMoreElements())
{
if (first)
log.finer("InitParameter:");
first = false;
String key = e.nextElement();
Object value = config.getInitParameter(key);
if (log.isLoggable(Level.FINER)) log.finer("- " + key + " = " + value);
}
} // dump (ServletConfig)
/**
* Dump Session
* @param ctx servlet context
*/
public static void dump (ServletContext ctx)
{
if (log.isLoggable(Level.CONFIG)) log.config("ServletContext " + ctx.getServletContextName());
if (log.isLoggable(Level.CONFIG)) log.config("- ServerInfo=" + ctx.getServerInfo());
if (!CLogMgt.isLevelFiner())
return;
boolean first = true;
Enumeration e = ctx.getInitParameterNames();
while (e.hasMoreElements())
{
if (first)
log.finer("InitParameter:");
first = false;
String key = e.nextElement();
Object value = ctx.getInitParameter(key);
if (log.isLoggable(Level.FINER)) log.finer("- " + key + " = " + value);
}
first = true;
e = ctx.getAttributeNames();
while (e.hasMoreElements())
{
if (first)
log.finer("Attributes:");
first = false;
String key = e.nextElement();
Object value = ctx.getAttribute(key);
if (log.isLoggable(Level.FINER)) log.finer("- " + key + " = " + value);
}
} // dump
/**
* Dump Session
* @param session session
*/
public static void dump (HttpSession session)
{
if (log.isLoggable(Level.CONFIG))log.config("Session " + session.getId());
if (log.isLoggable(Level.CONFIG))log.config("- Created=" + new Timestamp(session.getCreationTime()));
if (!CLogMgt.isLevelFiner())
return;
boolean first = true;
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements())
{
if (first)
log.finer("Attributes:");
first = false;
String key = e.nextElement();
Object value = session.getAttribute(key);
if (log.isLoggable(Level.FINER)) log.finer("- " + key + " = " + value);
}
} // dump (session)
/**
* Dump Request
* @param request request
*/
public static void dump (HttpServletRequest request)
{
if (log.isLoggable(Level.CONFIG)) log.config("Request " + request.getProtocol() + " " + request.getMethod());
if (!log.isLoggable(Level.FINER))
return;
log.finer("- Server=" + request.getServerName() + ", Port=" + request.getServerPort());
log.finer("- ContextPath=" + request.getContextPath()
+ ", ServletPath=" + request.getServletPath()
+ ", Query=" + request.getQueryString());
log.finer("- From " + request.getRemoteHost() + "/" + request.getRemoteAddr()
// + ":" + request.getRemotePort()
+ " - User=" + request.getRemoteUser());
log.finer("- URI=" + request.getRequestURI() + ", URL=" + request.getRequestURL());
log.finer("- AuthType=" + request.getAuthType());
log.finer("- Secure=" + request.isSecure());
log.finer("- PathInfo=" + request.getPathInfo() + " - " + request.getPathTranslated());
log.finer("- UserPrincipal=" + request.getUserPrincipal());
//
boolean first = true;
Enumeration> e = request.getHeaderNames();
/** Header Names */
while (e.hasMoreElements())
{
if (first)
log.finer("- Header:");
first = false;
String key = (String)e.nextElement();
Object value = request.getHeader(key);
log.finer(" - " + key + " = " + value);
}
/** **/
first = true;
/** Parameter */
try
{
String enc = request.getCharacterEncoding();
if (enc == null)
request.setCharacterEncoding(WebEnv.ENCODING);
}
catch (Exception ee)
{
log.log(Level.SEVERE, "Set CharacterEncoding=" + WebEnv.ENCODING, ee);
}
e = request.getParameterNames();
while (e.hasMoreElements())
{
if (first)
log.finer("- Parameter:");
first = false;
String key = (String)e.nextElement();
String value = WebUtil.getParameter (request, key);
log.finer(" - " + key + " = " + value);
}
first = true;
/** Attributes */
e = request.getAttributeNames();
while (e.hasMoreElements())
{
if (first)
log.finer("- Attributes:");
first = false;
String key = (String)e.nextElement();
Object value = request.getAttribute(key);
log.finer(" - " + key + " = " + value);
}
/** Cookies */
Cookie[] ccc = request.getCookies();
if (ccc != null)
{
for (int i = 0; i < ccc.length; i++)
{
if (i == 0)
log.finer("- Cookies:");
log.finer (" - " + ccc[i].getName ()
+ ", Domain=" + ccc[i].getDomain ()
+ ", Path=" + ccc[i].getPath ()
+ ", MaxAge=" + ccc[i].getMaxAge ());
}
}
log.finer("- Encoding=" + request.getCharacterEncoding());
log.finer("- Locale=" + request.getLocale());
first = true;
e = request.getLocales();
while (e.hasMoreElements())
{
if (first)
log.finer("- Locales:");
first = false;
log.finer(" - " + e.nextElement());
}
log.finer("- Class=" + request.getClass().getName());
} // dump (Request)
/**
* Add Footer (with diagnostics)
* @param request request
* @param response response
* @param servlet servlet
* @param body - Body to add footer
* @deprecated
*/
@Deprecated
public static void addFooter(HttpServletRequest request, HttpServletResponse response,
HttpServlet servlet, body body)
{
body.addElement(new hr());
body.addElement(new comment(" --- Footer Start --- "));
// Command Line
p footer = new p();
footer.addElement(org.compiere.Adempiere.DATE_VERSION + ": ");
footer.addElement(new a("javascript:diag_window();", "Window Info"));
footer.addElement(" - ");
footer.addElement(new a("javascript:parent.resizeFrame('5,*');", "Menu"));
footer.addElement(" - ");
footer.addElement(new a("javascript:diag_navigator();", "Browser Info"));
footer.addElement(" - ");
footer.addElement(new a("javascript:diag_request();", "Request Info"));
footer.addElement(" - ");
footer.addElement(new a("javascript:diag_document();", "Document Info"));
footer.addElement(" - ");
footer.addElement(new a("javascript:diag_form();", "Form Info"));
footer.addElement(" - ");
footer.addElement(new a("javascript:toggle('DEBUG');", "Servlet Info"));
footer.addElement(" - ");
footer.addElement(new a("javascript:diag_source();", "Show Source"));
footer.addElement("\n");
body.addElement(footer);
// Add ServletInfo
body.addElement(new br());
body.addElement(getServletInfo(request, response, servlet));
body.addElement(new script("hide('DEBUG');"));
body.addElement(new comment(" --- Footer End --- "));
} // getFooter
/**
* Get Information and put it in a HTML table
* @param request request
* @param response response
* @param servlet servlet
* @return Table
*/
private static table getServletInfo (HttpServletRequest request,
HttpServletResponse response, HttpServlet servlet)
{
table table = new table();
table.setID("DEBUG");
Enumeration> e;
tr space = new tr().addElement(new td().addElement("."));
// Request Info
table.addElement(space);
table.addElement(new tr().addElement(new td().addElement(new h3("Request Info")) ));
table.addElement(new tr().addElement(new td().addElement("Method"))
.addElement(new td().addElement(request.getMethod() )));
table.addElement(new tr().addElement(new td().addElement("Protocol"))
.addElement(new td().addElement(request.getProtocol() )));
table.addElement(new tr().addElement(new td().addElement("URI"))
.addElement(new td().addElement(request.getRequestURI() )));
table.addElement(new tr().addElement(new td().addElement("Context Path"))
.addElement(new td().addElement(request.getContextPath() )));
table.addElement(new tr().addElement(new td().addElement("Servlet Path"))
.addElement(new td().addElement(request.getServletPath() )));
table.addElement(new tr().addElement(new td().addElement("Path Info"))
.addElement(new td().addElement(request.getPathInfo() )));
table.addElement(new tr().addElement(new td().addElement("Path Translated"))
.addElement(new td().addElement(request.getPathTranslated() )));
table.addElement(new tr().addElement(new td().addElement("Query String"))
.addElement(new td().addElement(request.getQueryString() )));
table.addElement(new tr().addElement(new td().addElement("Content Length"))
.addElement(new td().addElement("" + request.getContentLength() )));
table.addElement(new tr().addElement(new td().addElement("Content Type"))
.addElement(new td().addElement(request.getContentType() )));
table.addElement(new tr().addElement(new td().addElement("Character Encoding"))
.addElement(new td().addElement(request.getCharacterEncoding() )));
table.addElement(new tr().addElement(new td().addElement("Locale"))
.addElement(new td().addElement(request.getLocale().toString() )));
table.addElement(new tr().addElement(new td().addElement("Schema"))
.addElement(new td().addElement(request.getScheme() )));
table.addElement(new tr().addElement(new td().addElement("Server Name"))
.addElement(new td().addElement(request.getServerName() )));
table.addElement(new tr().addElement(new td().addElement("Server Port"))
.addElement(new td().addElement("" + request.getServerPort() )));
table.addElement(new tr().addElement(new td().addElement("Remote User"))
.addElement(new td().addElement(request.getRemoteUser() )));
table.addElement(new tr().addElement(new td().addElement("Remote Address"))
.addElement(new td().addElement(request.getRemoteAddr() )));
table.addElement(new tr().addElement(new td().addElement("Remote Host"))
.addElement(new td().addElement(request.getRemoteHost() )));
table.addElement(new tr().addElement(new td().addElement("Authorization Type"))
.addElement(new td().addElement(request.getAuthType() )));
table.addElement(new tr().addElement(new td().addElement("User Principal"))
.addElement(new td().addElement(request.getUserPrincipal()==null ? "" : request.getUserPrincipal().toString())));
table.addElement(new tr().addElement(new td().addElement("IsSecure"))
.addElement(new td().addElement(request.isSecure() ? "true" : "false" )));
// Request Attributes
table.addElement(space);
table.addElement(new tr().addElement(new td().addElement(new h3("Request Attributes")) ));
e = request.getAttributeNames();
while (e.hasMoreElements())
{
String name = e.nextElement().toString();
String attrib = request.getAttribute(name).toString();
table.addElement(new tr().addElement(new td().addElement(name))
.addElement(new td().addElement(attrib)));
}
// Request Parameter
table.addElement(space);
table.addElement(new tr().addElement(new td().addElement(new h3("Req Parameters")) ));
try
{
String enc = request.getCharacterEncoding();
if (enc == null)
request.setCharacterEncoding(WebEnv.ENCODING);
}
catch (Exception ee)
{
log.log(Level.SEVERE, "Set CharacterEncoding=" + WebEnv.ENCODING, ee);
}
e = request.getParameterNames();
while (e.hasMoreElements())
{
String name = (String)e.nextElement();
String para = WebUtil.getParameter (request, name);
table.addElement(new tr().addElement(new td().addElement(name))
.addElement(new td().addElement(para)));
}
// Request Header
table.addElement(space);
table.addElement(new tr().addElement(new td().addElement(new h3("Req Header")) ));
e = request.getHeaderNames();
while (e.hasMoreElements())
{
String name = (String)e.nextElement();
if (!name.equals("Cockie"))
{
String hdr = request.getHeader(name);
table.addElement(new tr().addElement(new td().addElement(name))
.addElement(new td().addElement(hdr)));
}
}
// Request Cookies
table.addElement(space);
table.addElement(new tr().addElement(new td().addElement(new h3("Req Cookies")) ));
Cookie[] cc = request.getCookies();
if (cc != null)
{
for (int i = 0; i < cc.length; i++)
{
// Name and Comment
table.addElement(new tr().addElement(new td().addElement(cc[i].getName() ))
.addElement(new td().addElement(cc[i].getValue()) ));
table.addElement(new tr().addElement(new td().addElement(cc[i].getName()+": Comment" ))
.addElement(new td().addElement(cc[i].getComment()) ));
table.addElement(new tr().addElement(new td().addElement(cc[i].getName()+": Domain" ))
.addElement(new td().addElement(cc[i].getDomain()) ));
table.addElement(new tr().addElement(new td().addElement(cc[i].getName()+": Max Age" ))
.addElement(new td().addElement(""+ cc[i].getMaxAge()) ));
table.addElement(new tr().addElement(new td().addElement(cc[i].getName()+": Path" ))
.addElement(new td().addElement(cc[i].getPath()) ));
table.addElement(new tr().addElement(new td().addElement(cc[i].getName()+": Is Secure" ))
.addElement(new td().addElement(cc[i].getSecure() ? "true" : "false") ));
table.addElement(new tr().addElement(new td().addElement(cc[i].getName()+": Version" ))
.addElement(new td().addElement("" + cc[i].getVersion()) ));
}
} // Cookies
// Request Session Info
table.addElement(space);
table.addElement(new tr().addElement(new td().addElement(new h3("Req Session")) ));
HttpSession session = request.getSession(true);
table.addElement(new tr().addElement(new td().addElement("Session ID"))
.addElement(new td().addElement(session.getId() )));
Timestamp ts = new Timestamp(session.getCreationTime());
table.addElement(new tr().addElement(new td().addElement("Created"))
.addElement(new td().addElement(ts.toString() )));
ts = new Timestamp(session.getLastAccessedTime());
table.addElement(new tr().addElement(new td().addElement("Accessed"))
.addElement(new td().addElement(ts.toString() )));
table.addElement(new tr().addElement(new td().addElement("Request Session ID"))
.addElement(new td().addElement(request.getRequestedSessionId() )));
table.addElement(new tr().addElement(new td().addElement(".. via Cookie"))
.addElement(new td().addElement("" + request.isRequestedSessionIdFromCookie() )));
table.addElement(new tr().addElement(new td().addElement(".. via URL"))
.addElement(new td().addElement("" + request.isRequestedSessionIdFromURL() )));
table.addElement(new tr().addElement(new td().addElement("Valid"))
.addElement(new td().addElement("" + request.isRequestedSessionIdValid() )));
// Request Session Attributes
table.addElement(space);
table.addElement(new tr().addElement(new td().addElement(new h3("Session Attributes")) ));
e = session.getAttributeNames();
while (e.hasMoreElements())
{
String name = (String)e.nextElement();
String attrib = session.getAttribute(name).toString();
table.addElement(new tr().addElement(new td().addElement(name))
.addElement(new td().addElement(attrib)));
}
// Response Info
table.addElement(space);
table.addElement(new tr().addElement(new td().addElement(new h3("Response")) ));
table.addElement(new tr().addElement(new td().addElement("Buffer Size"))
.addElement(new td().addElement(String.valueOf(response.getBufferSize()) )));
table.addElement(new tr().addElement(new td().addElement("Character Encoding"))
.addElement(new td().addElement(response.getCharacterEncoding() )));
table.addElement(new tr().addElement(new td().addElement("Locale"))
.addElement(new td().addElement(response.getLocale()==null ? "null" : response.getLocale().toString())));
// Servlet
table.addElement(space);
table.addElement(new tr().addElement(new td().addElement(new h3("Servlet")) ));
table.addElement(new tr().addElement(new td().addElement("Name"))
.addElement(new td().addElement(servlet.getServletName())));
table.addElement(new tr().addElement(new td().addElement("Info"))
.addElement(new td().addElement(servlet.getServletInfo())));
// Servlet Init
table.addElement(space);
table.addElement(new tr().addElement(new td().addElement(new h3("Servlet Init Parameter")) ));
e = servlet.getInitParameterNames();
// same as: servlet.getServletConfig().getInitParameterNames();
while (e.hasMoreElements())
{
String name = (String)e.nextElement();
String para = servlet.getInitParameter(name);
table.addElement(new tr().addElement(new td().addElement(name))
.addElement(new td().addElement(para)));
}
// Servlet Context
table.addElement(space);
table.addElement(new tr().addElement(new td().addElement(new h3("Servlet Context")) ));
ServletContext servCtx = servlet.getServletContext();
e = servCtx.getAttributeNames();
while (e.hasMoreElements())
{
String name = (String)e.nextElement();
String attrib = servCtx.getAttribute(name).toString();
table.addElement(new tr().addElement(new td().addElement(name))
.addElement(new td().addElement(attrib)));
}
// Servlet Context
table.addElement(space);
table.addElement(new tr().addElement(new td().addElement(new h3("Servlet Context Init Parameter")) ));
e = servCtx.getInitParameterNames();
while (e.hasMoreElements())
{
String name = (String)e.nextElement();
String attrib = servCtx.getInitParameter(name).toString();
table.addElement(new tr().addElement(new td().addElement(name))
.addElement(new td().addElement(attrib)));
}
/* */
return table;
} // getServletInfo
} // WEnv