SSH开发由于Jar文件引起的一些异常

以下曾经学习中遇到的一些异常,尤其是初学者在SSH整合时因为一些Jar文件所引发的异常:

 

 

ognl.OgnlException: target is null for setProperty(null, "name", [Ljava.lang.String;@10ade7e)
  • 如果出现以上错误,表名在你的Java类中没有name的get,set方法

 

ognl.NoSuchPropertyException(没有对应属性异常)
ognl.NoSuchPropertyException: com.xie.struts2.tags.modal.Student.sName(没有对应属性异常)
  •  该异常一般都是由于属性没有对应上所引起的

 

com.opensymphony.xwork2.util.logging.jdk.JdkLogger error
严重: Dispatcher initialization failedUnable to load configuration. - bean - jar:file:/D:/Program%20Files/Tomcat%206.0/webapps/stronger/WEB-INF/lib/struts2-core-2.3.4.jar!/struts-default.xml:51:178 
atcom.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:69)
  • 如果没有这个Jar文件commons-fileupload-1.2.2.jar会引起以上异常,该文件用于Struts文件上传和下载,struts2.1.6版本后必须加入此文件

com.opensymphony.xwork2.util.logging.jdk.JdkLogger 
warn警告: Could not create JarEntryRevision for [jar:file:/D:/Program%20Files/Tomcat%206.0/webapps/stronger/WEB-INF/lib/struts2-core-2.3.4.jar]!java.lang.NoClassDefFoundError: 
org/apache/commons/io/FileUtils at com.opensymphony.xwork2.util.fs.JarEntryRevision.build(JarEntryRevision.java:69) 
  •  缺少该文件commons-io-2.0.1.jar commons项目(commons项目就是java中一些常用的公共的组件)的io子项目,是处理异常的

 

com.opensymphony.xwork2.util.logging.jdk.JdkLogger 
warn警告: Could not create JarEntryRevision for [jar:file:/D:/Program%20Files/Tomcat%206.0/webapps/stronger/WEB-INF/lib/struts2-core-2.3.4.jar]!
java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils at com.opensymphony.xwork2.util.fs.JarEntryRevision.build(JarEntryRevision.java:69)
  •  commons-fileupload-1.2.2.jarcommons-io-2.0.1.jar 这两个文件引起的

 

Exception starting filter struts2java.lang.NoClassDefFoundError: 
org/apache/commons/lang3/StringUtils at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:209)
  • 可以查看有没有这个文件commons-lang3-3.1.jar  为java.lang包提供扩展

 

com.opensymphony.xwork2.util.logging.jdk.JdkLogger 
error严重: Dispatcher initialization failed Unable to load configuration. - bean - jar:file:/D:/Program%20Files/Tomcat%206.0/webapps/stronger/WEB-INF/lib/struts2-core-2.3.4.jar!/struts-default.xml:57:89 at 
com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:69) at 
org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:390)
  • freemarker-2.3.19.jar 缺少该文件, 支持freemarker(struts2的UI标签的模板使用FreeMarker编写)的,在webwork中也有

 

com.opensymphony.xwork2.util.logging.jdk.JdkLogger error严重: 
Dispatcher initialization failed java.lang.RuntimeException: 
java.lang.reflect.InvocationTargetException at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:301)
  • javassist-3.11.0.GA.jar   一个开源的分析、编辑和创建Java字节码的类库(hibernate中也需要,引入其中一个即可)

org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter struts2 java.lang.NoClassDefFoundError: ognl/PropertyAccessor at 
com.opensymphony.xwork2.config.impl.DefaultConfiguration.createBootstrapContainer(DefaultConfiguration.java:284) at 
com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:205)

 

  • ognl-3.0.5.jar   支持ognl语言(对象图导航语言(Object Graph Navigation  Language))的,struts2框架通过其读写对象的属性,webwork也支持ognl语言

 

 

Exception starting filter struts2java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils

 

  •  如果出现以上错误,可以尝试添加该commons-lang3-3.1.jar

 

 

// 用JDBC连接Oracle 10g 遇到的问题
// 数据库升级为Oracle 10g RAC,原有的连接方式下,出现如下错误:
出错信息:- Servlet.service() for servlet jsp threw 
exceptionjavax.servlet.jsp.JspException: Unable to get connection, DataSource invalid:
 “org.apache.commons.dbcp.SQLNestedException:
 Cannot create PoolableConnectionFactory (Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12505)
(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))))”at 
org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnection(QueryTagSupport.java:276)at 
org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(QueryTagSupport.java:159)

   或者出现以下错误:

 

An error occurred while establishing the connection:Type: java.sql.SQLException Error Code: 17002Message:
Io异常:Connection refused(DESCRIPTION=(ERR=1153)(VSNNUM=169869568)
(ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4)(ARGS=’(ADDRESS=(PROTOCOL=TCP)(HOST=RAC02)(PORT=1521))’))(ERROR=(CODE=305)(EMFI=1))))
  • 可以尝试将Oracle驱动替换为10g的ojdbc14.jarojdbc14.jar    适用于 JDK 1.4 and 5.0ojdbc6.jar:支持JDK6,支持JDBC 4.0,新的java.sql.SQLXML类型没有被支持;ojdbc5.jar:全面支持使用JDK5 和 JDBC 3.0 

 

Hibernate使用C3P0的连接池,数据库为Mysql。开发测试没有问题,在运行中每个一段长的空闲时间就出现异常:
org.hibernate.exception.JDBCConnectionException: could not execute query 
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74) 
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) 
....... 
Caused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error: 
** BEGIN NESTED EXCEPTION ** 
com.mysql.jdbc.CommunicationsException 
MESSAGE: Communications link failure due to underlying exception: 
** BEGIN NESTED EXCEPTION ** 
java.net.SocketException 
MESSAGE: Broken pipe 
STACKTRACE: 
java.net.SocketException: Broken pipe 
at java.net.SocketOutputStream.socketWrite0(Native Method) 
...... 
** END NESTED EXCEPTION ** 
  •  Mysql服务器默认的wait_timeout8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection。这就是问题的所在,在C3P0 pools中的connections如果空闲超过8小时,Mysql将其断开,而C3P0并不知道该connection已经失效,如果这时有Client请求connectionC3P0将该失效的Connection提供给Client,将会造成上面的异常。
  • 解决的方法有3种:

        1 增加wait_timeout的时间。

减少Connection poolsconnectionlifetime

测试Connection poolsconnection的有效性。

              当然最好的办法是同时综合使用上述3种方法,下面就DBCPC3P0分别做一说明,假设wait_timeout为默认的8小时

DBCP增加以下配置信息:

//set to 'SELECT 1' 
validationQuery = "SELECT 1" 
//set to 'true' 
testWhileIdle = "true" 
//some positive integer 
timeBetweenEvictionRunsMillis = 3600000 
//set to something smaller than 'wait_timeout' 
minEvictableIdleTimeMillis = 18000000 
//if you don't mind a hit for every getConnection(), set to "true" 
testOnBorrow = "true" 

  C3P0增加以下配置信息:

//获取connnection时测试是否有效
testConnectionOnCheckin = true
//自动测试的table名称
automaticTestTable=C3P0TestTable
//set to something much less than wait_timeout, prevents connections from going stale 
idleConnectionTestPeriod = 18000 
//set to something slightly less than wait_timeout, preventing 'stale' connections from being handed out 
maxIdleTime = 25000 
//if you can take the performance 'hit', set to "true" 
testConnectionOnCheckout = true 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值