高级项目进行时 转

高级项目进行时

已有 240 次阅读  2009-08-21 19:34   标签项目进行时 

 1、 WARN - Error setting value
ognl.OgnlException: target is null for setProperty(null, "emailContent", [Ljava.lang.String;@b56559)

   ——后经排查发现是我在jsp页面中给的name值不对, 缺少了一个前缀

2、在MyEclipse中设置编码方式:

      a、windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Workspace,右侧Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8。 
      b、windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Content Types,右侧Context Types树,点开Text,选择Java Source File,在下面的Default encoding输入框中输入UTF-8,点Update,则设置Java文件编码为UTF-8。其他java应用开发相关的文件如:properties、XML等已经由Eclipse缺省指定,分别为ISO8859-1,UTF-8,如开发中确需改变编码格式则可以在此指定。

 

3、 中文乱码问题: 做Web开发也有半年了, 乱码自然是碰到过不少。 但是昨晚乱码的原因却很奇特... ...

         整整搞了我两个多小时, 最终发现是:
<form id="sendMailForm" name="news" action="sendmail.actio
n" method="post">
 我起初没有写名method="post"最终导致乱码。
 惨痛的教训呀
  哎....

4、  当一个类中同时有继承与实现时应该将继承写在前面

5、  关于MyEclipse下.xml文件的补全功能失效的问题:
        可以按照如下方式进行设置:
        window——prefernces——XML——XML catalog中进行添加。

        Window -> Preferences -> MyEclipse -> Editors -> XML -> XML Catalog。找到路径后,再安装帮助文档中的办法设置,问题解决。导入dtd后,以后每次新建xml文件的时候,选择XML (Basic Templates),下一步选择Create XML file from a DTD file。导入该dtd文件,再编辑xml,可以自动补全,很爽。

6、 A表为主表,B表主从表。对应的POJO_B象关联了POJO_A对象, 当持久化B对象的时候,如果A对象还没有被持久化, 就需要持久化这个A对象, 然后再持久化B对象。 否则就会抛出异常: not-null property references a null or transient value(此异常也有可能是某属性被设为非null, 可以在配置文件中进行相应的修改),

   这是因为在默认的情况下, 当Hibernate持久化一个临时对象的时候不会自动持久化与之关联的其他临时对象。

       当然解决这个问题可以通过在映射文件中使用cascade属性, cascade属性会在持久化一个临时对象的时候自动持久化与之关联的其他临时对象。 如在<many-to-one>中添加 cascade="save-update"...  ...

 

7、   异常: org.hibernate.exception.SQLGrammarExceptionCould not execute JDBC batch update

        后来发现原来是自己把源文件的数据库名字改了,导致这样的错误

      解决办法是把*.hbm.xml文件的  schema=" " 改为现在对应的数据库

8、 异常: java.lang.OutOfMemoryError: PermGen space(起因: 一个application反复发布几次存在这个问题)

       ——关于这个问题至今仍是没有一个明确的解释, 我从网上选择了几个觉得是正确的:

    a、 发现了问题的关键。原来SUN 的JVM把内存分了不同的区,其中一个就是permenter区用来存放用得非常多的类和类描述。本来SUN设计的时候认为这个区域在JVM启动的时候就固定了,但他没有想到现在动态会用得这么广泛。而且这个区域有特殊的垃圾收回机制,现在的问题是动态加载类到这个区域后,gc根本没办法回收!

  b、 BEA 的Jrokit
          sun jvm有个好处是,比jrockit remote debug速度快很多. jrockit只适合当作生产环境服务器,测试功能时,建议还是使用sun jvm

  c、 参考的解决方式: 把webapps下多余的項目刪了

          另外我又把项目下的lib下的jar放到了tomcat下,发布速度上也有所提升 ;        设大PermSize

          碰到过这样的问题,也是通过设置JVM的参数解决的

        

OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被Load的时候被放入 PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对 PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现 PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。

改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
 
 
  ——————————————————网友参考版——————————————
    

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。

改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

2、

在tomcat中redeploy时出现outofmemory的错误.

可以有以下几个方面的原因:

1,使用了proxool,因为proxool内部包含了一个老版本的cglib.

2, log4j,最好不用,只用common-logging

3, 老版本的cglib,快点更新到最新版。

4,更新到最新的hibernate3.2
 

3、

这里以tomcat环境为例,其它WEB服务器如jboss,weblogic等是同一个道理。
一、java.lang.OutOfMemoryError: PermGen space

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,
这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,
它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对
PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,
这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小
超过了jvm默认的大小(4M)那么就会产生此错误信息了。
解决方法: 手动设置MaxPermSize大小

修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE:   $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。

二、java.lang.OutOfMemoryError: Java heap space
Heap size 设置
JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,
其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可
进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。
提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。
提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
解决方法:手动设置Heap size
修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE:   $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -Xms800m -Xmx800m   -XX:MaxNewSize=256m"

三、实例,以下给出1G内存环境下java jvm 的参数设置参考:

JAVA_OPTS="-server -Xms800m -Xmx800m  -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

你可能感兴趣的:(jvm,tomcat,xml,应用服务器,MyEclipse)