`

SSH开发遇到问题记录

阅读更多

Q1. 2010-12-28 查询数据时遇到异常: org.hibernate.LazyInitializationException -failed to lazily initialize a collection of role.

解决 :在 web.xml 中添加过滤器:

<!-- Hibernate Open Session In View filter-->
<filter>
	<filter-name>hibernateOpenSessionInViewFilter</filter-name>
	<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>hibernateOpenSessionInViewFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

 

Q2. 2011-1-5 查询数据时遇到异常: java.lang.NoClassDefFoundError: Anltr/ANTLRException.

解决 : 加上 antlr-2.7.6.jar (jar具体版本需与当前环境匹配,我的环境: Spring 3.0.1 + Hibernate 3.3.2GA)

 

Q3. 2011-1-6 一个简单的表单提交功能,在Ubuntu下的Firefox和Chrome提交表单之后,没有如期待中的执行action,而在Windows下却是ok的。 (关键类库版本:xwork-core-2.1.6)

原因 : 凡事总有原因,将 com.opensymphony.xwork2 日志级别改为 INFO, 再提交,果然问题原因浮现:

Caused by: java.lang.NoSuchMethodException: ....TabRole.setStartExpire([Ljava.lang.String;)
    at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1206)
    ... 110 more
jsp上该表单元素是这么写的:<input type="text" name="entity.startExpire" value="${entity.startExpire}"/>

entity 是 TabRole 类型的,TabRole 是持久层的数据模型对象,其中 startExpire 是 Date 类型的,大致原因就是这个了。

至于为何在不同的OS下有此差别,尚有待研究。

see:http://ruinxdgzy.iteye.com/blog/805138

 

Q4. 2011-7-11 发现SpringSide v3.3.3 中类 PropertyFilter 的1个bug:

使用 new PropertyFilter("EQI_usbRevision", "value"); 构造查询条件,预期结果字段名应当是 usbRevision,而实际结果却变成了[usb, evision]。

原因 :经过调试,发现问题出在类 PropertyFilter 第79行:

           propertyNames = StringUtils.split(propertyNameStr, PropertyFilter.OR_SEPARATOR);

此行执行后 propertyNames 值变成了一个数组, 一开始以为是 split 方法的bug,后仔细看 split 方法说明,发现是 PropertyFilter 没有弄清楚这个split 方法的用法,split 方法并不是把 String separatorChars 这个参数的值作为整体来进行分割,而是匹配其中的单个字符的,usbRevision 这个名称中有R,故被分割了。正确的应调用 StringUtils.splitByWholeSeparator 方法进行分割。

解决 :在不修改类库源码的情况下,调整字段名,避免出现 O 和 R,则可避免字段名被错误解析。

          (注:随后去SpringSide官网寻觅新版本,查看v3.3.4src,发现该bug已被修复。)

 

Q5. 2011-7-16 Ubuntu11.04 64bit下部署1个webapp到Tomcat,结果报连不上DB(Oracle10g、c3p0):

ERROR [org.hibernate.util.JDBCExceptionReporter] - Connections could not be acquired from the underlying database!

当时,本人电脑双系统(windows7、ubuntu10.04LTS)下分别试验,发现win7下ok,ubuntu下也有同样问题,而用数据库客户端连接则均是ok的。

原因 :网上搜索发现遇到此问题的极多,但没有明确的解决方案,要不就是没解决,要不就是莫名奇妙的就解决了。

解决 :在连不上的那台电脑上试了n多种方法(copy连接池相关jar包到tomcat的libs下==)均无效,后来换了台电脑部署(OS环境相同、JDK等配置均采用原始配置、未做过多改动),居然就OK了。

(这个问题有时间一定要好好研究下到底是何原因。)

 

Q6. 2011-12-15 Hibernate(版本3) HQL更新数据,时间类型字段值用以下方法设置时,时分秒变成了00:00:00:

       Query query = session.createQuery ("..."); query.setDate("...", new Date());

解决 :改为使用 query. setTimestamp("...", new Date()); 方法。

 

Q7. 2012-3-13 2个应用实例同时对同个数据库(MySQL)、同张数据表存在读写操作,写入时遇到主键冲突。

原因 :hibernate 映射数据表主键字段使用了 increment

解决 :改为使用 identity。

see:hibernate的主键生成方式

 

Q8. 2012-6 配置了1个AOP拦截方法,应用启动时报错: error at ::0 formal unbound in pointcut

原因 :拦截方法的参数有问题。

解决 :删除该方法的所有参数,或将方法参数改为 JoinPoint 类型或其他 JoinPoint 相关类型。

 

see: http://blog.csdn.net/llbupt/article/details/6611901



分享到:
评论

相关推荐

    基于ssh的学生信息管理系统设计与实现报告.doc

    该报告不仅记录了项目的整体架构、技术选型和具体实现,还分享了在开发过程中所遇到的问题和解决方案,为读者提供了有关软件开发和项目管理方面的实用见解。 首先,报告从项目背景出发,介绍了为何选择开发学生信息...

    基于Java(SSH)+ionic + MySQL实现电子词典APP【100011513】

    本系统前端使用 ionic 开发框架,完成界面的设计和方法的实现。后端使用 SSH 框架,用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的 Java 对象,然后编写基本的 DAO 接口,采用 Hibernate 架构...

    Linux平台mysql开启远程登录

    开发过程中经常遇到远程访问mysql的问题,每次都需要搜索,感觉太麻烦,这里记录下,也方便我以后查阅。 首先访问本机的mysql(用ssh登录终端,输入如下命令): mysql -uroot -p 输入密码登陆进去后,输入如下的语句...

    数据库课程设计题目汇总.doc

    (5) 应用系统功能结构图(模块结构图) (6) 各功能模块程序流程图及其说明 (7) 程序源代码及其说明 (8) 总结(课程设计中遇到的主要问题和解决方法;创新和得意之处;课程设计中存在的不足 ,需进一步改进的设想;课程...

    JAVA上百实例源码以及开源项目

    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...

    java开源包1

    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...

    java开源包11

    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...

    java开源包2

    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...

    java开源包3

    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...

    JAVA上百实例源码以及开源项目源代码

    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...

    java开源包6

    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...

    java开源包5

    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...

    java开源包10

    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...

    java开源包4

    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...

    java开源包8

    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...

    java开源包7

    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...

    java开源包9

    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...

    java开源包101

    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...

    Java资源包01

    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...

Global site tag (gtag.js) - Google Analytics