首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

工作中遇到的有关问题总结-不断更新

2012-09-01 
工作中遇到的问题总结---不断更新1. 启动tomcat报找不到com.ibm.db2.jcc.db2driver.答案:将db2jcc.jar,db2

工作中遇到的问题总结---不断更新

1. 启动tomcat报找不到com.ibm.db2.jcc.db2driver.
答案:将db2jcc.jar,db2jcc_license_cu.jar放入tomcat的lib下。将was.xml放到C:\apache-tomcat-6.0.20\conf\Catalina\localhost下。
2.启动tomcat 报严重: IOException while loading persisted sessions: java.io.EOFException
java.io.EOFException
?at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2228)
?
?Tomcat在启动时出现如下异常问题:

严重: IOException while loading persisted sessions: java.io.EOFException
严重: Exception loading sessions from persistent storage

是因为保存在硬盘上的session数据读取失败,问题似乎不大,但是如果不处理一下,每次启动都会出现这个问题,处理方法如下:

将work下面的文件清空,主要是*.ser文件,或者只是删除掉session.ser亦可。
3.? 增加annotation后,发现hibernate停在那了,调高debug级别。发现在等待空闲的链接,在was.txt增加
maxActive="20"???
maxIdle="10"??

解决。
4。 Tomcat 启动时:An exception or error occurred in the container during the request processing
java.lang.OutOfMemoryError: PermGen space
解决:
修改Tomcat\bin\catalina.bat文件。
找到set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"这句话。在前面加上rem注释掉。
在它下面加入:
set JAVA_OPTS=-server -Xms1<u>024m -Xmx1</u>024m -Xss512k -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true
重新启动Tomcat,正常启动了

Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: PermGen space
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m

Tomcat直接启动正常,通过myeclipse启动tomcat内存溢出.
MyEclipse启动Tomcat无视catalina.bat中设置内存大小的问题。
解决:
在 tomcat的catalina.bat中设置set JAVA_OPTS=-Xms128m -Xmx256m,直接使用startup.bat启动tomcat没有问题。
但是在myeclipse中配置tomcat后,通过myeclipse启动就出现内存溢出,之前在catalina.bat中设置的内存似乎没有作用。

?????????? 则需要做如下设置即可解决:

?????????? MyEclipse --> Window --> Preference... --> MyEclipse --> Application Servers -->

?????????? Tomcat --> Tomcat 6.X --> JDK --> Optional Java VM arguments :进行设置

?????????? 设置的内容:-Xms256m -Xmx512m
?????????????????????? -Dcom.sun.management.jmxremote=true


-Xms1024m -Xmx1048m? -Dcom.sun.management.jmxremote=true
实际上我的是如下:
-Xms1024m -Xmx1048m -XX:PermSize=100M?? -XX:MaxNewSize=256m?? -XX:MaxPermSize=256m? -Dcom.sun.management.jmxremote=true


5.如果db2改了表结构后出现不能解决的问题。重启db2控制中心,在控制面板service中重启db2服务即可。
run_>db2cmd 然后db2 ? SQLSTATE号(23505) 看程序中报的db2错误意思.
6。如果出现问题,看日志,控制台打印出来,有很多是因为数据库字段设置问题,trim()一下。
7.db2 数据库创建。安装db2时,选择让db2创建一个用户,第二项,用户名是workbench,密码。。。。在was.xml文件中,必须使用此用户名才行,
username="workbench",而不能使用其他具有db2admin权限的用户。否则会报"com.sun.jdi.InvocationException occurred invoking method."
异常.

8.修改myeclipse部署在tomcat中的位置:
修改项目下的.mymetadata文件, context-root="/部署在tomcat中的目录"

9.WCS 修改spring_customization.xml里的数据库设置
10。项目启动tomcat?? 报错:
严重: Servlet.service() for servlet jsp threw exception????

org.apache.jasper.JasperException: /index.jsp(2,0) Unable to read TLD "META-INF/c.tld" from JAR file "file:/D:/**/WEB-INF/lib/standard-1.1.2.jar":

解决:删掉project-name/WEB-INF/lib下jsp-api.jar

11.在我们写javascript的时候经肯定会经常用到 document.getElementById() 这个方法,这么长一串很容易写错,而且其中getElementById又有大小写之分。
?其实prototype.js里提倡的一个方法就是使用$()简写,通过以下的函数,你可以用$('id')来实现document.getElementById('id') 这个功能,怎么样,很爽吧!


12.struts2 迭代二维list。
<s:if test="3-inputLayout[#key][#status.index].size()>0">
???????? ??????<s:bean name="org.apache.struts2.util.Counter" id="counter">??
?????????????? <s:param name="first" value="1" />??
?????????????? <s:param name="last" value="(3-inputLayout[#key][#status.index].size())*2" />??
?????????????? <s:iterator>??
?????????????? <td width="16%" "\\+"转义后即可得到正确的结果。

"|" 分隔串时虽然能够执行,但是却不是预期的目的,"\\|"转义后即可得到正确的结果。

还有如果想在串中使用""字符,则也需要转义.首先要表达"aaaa\bbbb"这个串就应该用"aaaa\\bbbb",如果要分隔就应该这样才能得到正确结果:

String[] aa = "aaa\\bbb\\bccc".split("\\\");

转自:http://hi.baidu.com/danghj/blog/item/7259c2b461bebc708bd4b21e.html

14.ext onReady 用 window.onload(a);解决。
或是在目标div 后使用 Ext.onload(a); function a () {? Ext.tabTanel = ...}

15.Hibernate 懒加载问题,不能load出属性为List 类型的对象列表,这是没有把数据库操作加到相应的事物中的结果。
没有放到事务的结果。
报invokeException.
解决:
在web.xml中,
<filter>
??<filter-name>hibernateFilter</filter-name>
??<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
??<!--
???set the singleSession to false, otherwise,
???the flush_mode will be set to NEVER(read-only),
???then we can not save or update or delete the entity
??<init-param>
???<param-name>singleSession</param-name>
???<param-value>true</param-value>
??</init-param>
??-->
?</filter>
?
?<filter-mapping>
??<filter-name>hibernateFilter</filter-name>
??<url-pattern>*.do</url-pattern>
?</filter-mapping>

?<filter-mapping>
??<filter-name>hibernateFilter</filter-name>
??<url-pattern>*.jsp</url-pattern>
?</filter-mapping>
?
?
?在applicationContext.xml中,
?<tx:advice id="txAdvice" transaction-manager="transactionManager">
???? <tx:attributes >
??? ??
??? ??<!-- Web action -->
??? ??<!-- Web Action can't be advised, spring aop(including annotation) conflicts with struts interception mechanisam -->
??? ??<!-- Using struts transaction interceptor instead -->
??? ??
??? ??<!-- Service -->
??? ??<tx:method name="trans*" propagation="REQUIRED" rollback-for="Throwable"/>
??? ??<tx:method name="generate*" propagation="REQUIRED" rollback-for="Throwable"/>
??? ??<tx:method name="get*" propagation="REQUIRED" rollback-for="Throwable"/>------- 加的
??? ??
??? ??<!-- DAO action -->
??? ??<tx:method name="*Save*" propagation="REQUIRED" isolation="READ_COMMITTED" rollback-for="Throwable"/>
??? ??<tx:method name="*Delete*" propagation="REQUIRED" isolation="READ_COMMITTED"? rollback-for="Throwable"/>
??? ??<tx:method name="find*" propagation="REQUIRED" isolation="READ_COMMITTED"? rollback-for="Throwable"/>------- 加的
??? ??
??? ??<!-- default process for all method invoke, should be reconsidered with performance test result. -->
??? ??<tx:method name="*" propagation="NOT_SUPPORTED" read-only="true" rollback-for="Throwable"/>
??? ??
???? </tx:attributes>
? ?</tx:advice>

16。报query出错,语法错误,很多时候是数据库表没有数据造成的,这是数据库表数据不正确问题。
解决:
?重新导入一个好用的库。
?17。tomcat 启动时,struts2报错。一种情况是tomcat安装目录中存在空格,这肯定报错。
?18.update 数据时出错。报
?异常信息查看 Could not execute JDBC batch update; nested exception is org.hibernate.exception.DataException: Could not execute JDBC batch update org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; nested exception is org.hibernate.exception.DataException: Could not execute JDBC batch update
?解决:
?这是插入的字段类型和数据库字段不匹配导致的,每个字段输入符合数据库字段类型的正确的数值即可。
?
?19。页面传给后台时使用的是name字段,不是id。否则报找不到id错误。
?解决:
?<s:hidden name="appId" id="appId"></s:hidden>
?页面显示No Result Defined.一般是页面传递参数有问题,传递的值是空值
?解决:加%{}
?<s:hidden name="appMain.appMainId" value="%{appMain.appMainId}"></s:hidden>
??? ?<s:hidden name="appId" value="%{appMain.appMainId}"></s:hidden>
??? ?
?20.db2单独导出导入一个表连同其数据的方法?? ?
?我们可以尝试一下这种方式备份数据。
1、连接数据库 DB2 CONNECT TO DB USER ** USING PASSWORD
2、使用命令。DB2 EXPORT TO ***.ixf OF ixf SELECT * FROM TAB1 这样就可以将一个表的数据全部备份,而且同时创建了TAB表结构。
3,使用命令。DB2 IMPORT FROM ***.IXF OF IXF CREATE INTO TAB2 这样就可以将数据连同表结构导入数据。

这种方法很方便,数据及结构一次性全部搞定。但是缺点就是只能针对一个表的操作。若要对整个数据库做操作,我们可以编写一个批量脚本的BAt文件,可以直接运行。这样的备份时很方便的。

21。CodeTable 业务数据作为主键,设计错误。
解决:
表的主键是不允许被更改的,这是数据库设计的基本原则。

22.struts2配置文件加载顺序。
默认只加载类路径下的struts.xml等三类文件。
我的:
D:\workspace-was\WAS_V10_SRC\src\main\resources\struts.xml
<struts>
?<include file="/was/struts.xml"/>
?<include file="/advanced/struts.xml"/>
?<include file="/basic/struts.xml"/>
</struts>
后面覆盖前面的。

23.导入一个id为自增类型IXF文件
一般会拒绝读入.
解决:
IMPORT FROM 'C:\Documents and Settings\cn02557\Desktop\temp\bs_role_mod_entry.ixf' OF IXF
modified by identityignore
? COMMITCOUNT AUTOMATIC
? INSERT INTO "WORKBENCH"."BS_MOD_ROLE_ENTRY";

#SYNC 10;

24.代码表修改后需要重启Server才起效,否则还是先前的结果。
25.国际化文件不起作用。
解决:
首先,查看struts-base.xml中,value中是否已经包含了国际化文件的baseName.
<constant name="struts.custom.i18n.resources" value="/basic/string,/advanced/string,/was/string, workbench_string"></constant>

26.调试struts页面用的JS:
解决:
?<script type="text/javascript">
???var? stepsAll = [
???? ??<s:iterator value="relations" id="relation">
???? ??<s:text name="#relation.entity" />
???? ??<s:text name="#parameters.action" />
???? ??<s:text name="#parameters.id"/>
???? ??<s:text name="@com.atosorigin.workbench.core.util.Utils@toLowerCase(#relation.entity)" />
???? ??<s:text name="Entity.%{#relation.entity}" />
???? ??</s:iterator>?
????];
??
??
??</SCRIPT>
??
??27.报Struts has detected an unhandled exception,java.io.IOException: Stream closed
??发现是因为里面的属性没有初始化造成的。参考了如下:
??http://hi.baidu.com/jxcfree/blog/item/31873d5396c05d6e853524b6.html
??Struts has detected an unhandled exception2010-04-29 23:15今天写了一个小时的程序,结果调试就用了四个多小时。。。

调试时,总会有“Struts has detected an unhandled exception”报错,实在找不了问题,最后没办法了把以前一个相近的程序拿来对比,才发现忘了把model初始化了,因为用了ModelDriven<T>接口,唉,又是四个小时。。。
?


??解决:
??private List<ParamHelper> included -》private List<ParamHelper> included = new ArrayList<ParamHelper>();
??private List<ParamHelper> excluded -》private List<ParamHelper> excluded = new ArrayList<ParamHelper>();
??所以要养成正确编码的习惯,否则可能报很多莫名错误。
??
??28。在测试页面时每个页面尾部</body>上面加上jxw.jsp的路径,方便调试,和最后的清除。
??如</table>
??jxw.position/view.jsp
?</body>
?
?29.hibernate的Could not execute JDBC batch update错误原因及处理
?这个是由于没有将方法放入事务中的结果。
?解决:
?1。首先applicationContext-datasource.xml中设置hibernate.jdbc.batch_size =0,这样可以报出隐藏在batch update的真正错误原因。
?2。applicationContext.xml中将方法加入事务。如下:
?<tx:method name="modify*" propagation="REQUIRED" isolation="READ_COMMITTED" rollback-for="Throwable"/>
?3如果上两步还没解决,看下数据库字段设置。如果复合主键的每个主键设置成character(10),则页面上必须输入10位,否则hibernate会认为这是一条新的数据,
?将会执行insert操作,而不是update。因为系统的某个地方对空格进行了trim,如果页面上没有输满10位,数据库中的数据是带空格的,但是系统里不带空格,
?则从数据库中取不到相应的数据。所以页面上也显示不出来数据。----------这个我本来该注意到的。。将字段设置成varchar(10),则没有问题了。但是会带来性能问题。
?varchar性能低于character。
?
?最简单情况:
?
关键字: hibernate could not execute jdbc batch update
碰到这个错误Could not execute JDBC batch update

原因:数据库表中设置了关联关系,但是在插入数据的时候没有设置关联关系,插入的时候就是错误的。

改正:设置对表之间的关联关系就可以了。

热点排行