Chen Jian

Could not format discriminator value to SQL string

   [hibernate] Could not format discriminator value to SQL string…异常    如果discriminator value不是String类型就可能出这种错误,解决办法是在 Class.hbm.xml中的class元素处加上属性:discriminator-value="not null"

CGLIB环境下,Properties.copyProperties()要慎用

Properties.copyProperties() 就是用来复制一个BEAN的所有属性 到 另一个BEAN 但如果其中一个BEAN是ProxyBean(如CGLIB实现的代理),那就很可能会出错,因为ProxyBean有其他一些 莫名奇妙 的属性,把这些属性搞给一个非Proxy的原Bean,就会出现“无此属性” 错误

ResourceBundle 除了方便国际化,还有一个好处:将所有字符串集中存放

    假设你要给一个国家作网站,这个国家的第一级行政单位都叫“省”,你要介绍各个省的风土人情     如果不用ResourceBundle,就要将“省”字写在JSP里,或者数据库里,一个省一个JSP,或者一条数据库记录    有一天,翻译突然告诉你说:“不好意思,我译错了,不应叫‘省’,而应叫‘郡’”,那你就要改死了,一个JSP一个JSP地改,或者一条一条地更新数据库记录    如果用了ResourceBundle,就可以把所有的行政单位名都写在同一个文件中,当省变郡时,只需要在这个文件中批量替换一下就成,非常方便

配置文件的分类存放 — 例

6.4 配置文件的分类存放 代码中的配置文件可以分为两大类: 1. 只在开发时修改,而不能在运行时修改的配置文件,如Spring的Bean注入配置,Hibernate的字段映射等。此类文件若发生变更,则相当于JAVA源代码发生变更,必须由开发人员完成。因此此类文件适合放在classpath下。即web/WEB-INF/classes中。 2. 适于运行时修改的配置文件,它们代表着系统参数,跟着生产环境的变化而变化,如 线程池配置。为了方便部署,此类文件不应与java字节码混在一起,即不能在classpath下。此类文件必须放在non-classpath-config中。由于系统的分布式特性,non-classpath-config下又设置了两个目录:     a) process-common-config. 对所有进程来说配置相同的配置,如数据源配置;或者只为一个进程使用,不为其他进程使用的配置文件。     b) process-specific-config. 在不同进程中,有不同的配置。如不同进程就有不同的log4j文件路径。

为什么网站的在线数统计值为负值?

有一种可能是因为 统计数的加减程序 没有设成synchronized 但还有一种可能: When the server is restarted, if there are active sessions they are persisted by default. Then the server comes back up, and all these sessions are active, without a session created event, so your listener has a counter value of 0, but there are actually >0 active sessions. When these are …

为什么网站的在线数统计值为负值? Read More »

通过自动刷新的JSP记录Tomcat当前的Free Memory

大师Z教的:每5秒记录一下内存,写到一个文件里,然后利用Excel画一下图就行了 <meta http-equiv="refresh" content="5"> <%@ page contentType="text/html; charset=UTF-8"%> <%@ page import="java.io.*"%> <% Runtime lRuntime = Runtime.getRuntime(); long freeM = lRuntime.freeMemory() / 1024 / 1024; out.println("Free Memory: " + freeM + "M<br/>"); File file = new File("c:/temp/tomcat_jvm.csv"); Writer writer = new FileWriter(file, true); String content = ""+freeM; writer.write(content); writer.write("\n"); writer.close(); %>

修改Tomcat的运行内存 & JSP中查看当前的内存使用状况

在catalina.bat中加上红色那行 set _EXECJAVA=%_RUNJAVA% set MAINCLASS=org.apache.catalina.startup.Bootstrap set ACTION=start set SECURITY_POLICY_FILE= set DEBUG_OPTS= set JPDA= set JAVA_OPTS= -Xms512M -Xmx1024M ===JSP中查看当前的内存使用状况= Runtime lRuntime = Runtime.getRuntime(); out.println("*** BEGIN MEMORY STATISTICS ***"); out.println("Free  Memory: "+lRuntime.freeMemory()/1024/1024+"M"); out.println("Max   Memory: "+lRuntime.maxMemory()/1024/1024+"M"); out.println("Total Memory: "+lRuntime.totalMemory()/1024/1024+"M"); out.println("Available Processors : "+lRuntime.availableProcessors()+""); out.println("*** END MEMORY STATISTICS ***");