以下曾经学习中遇到的一些异常,尤其是初学者在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.jar,commons-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.jar;ojdbc14.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_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection。这就是问题的所在,在C3P0 pools中的connections如果空闲超过8小时,Mysql将其断开,而C3P0并不知道该connection已经失效,如果这时有Client请求connection,C3P0将该失效的Connection提供给Client,将会造成上面的异常。
- 解决的方法有3种:
1 增加wait_timeout的时间。
2 减少Connection pools中connection的lifetime。
3 测试Connection pools中connection的有效性。
当然最好的办法是同时综合使用上述3种方法,下面就DBCP和C3P0分别做一说明,假设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
分享到:
相关推荐
这个"SSH整合jar包很全.rar"文件可能包含了完成SSH整合项目所需的各种库文件,包括Spring、Struts、Hibernate以及它们的依赖,还有可能包括一些示例代码或者配置文件,方便开发者快速搭建和运行SSH项目。使用这个jar...
这通常是由于在配置文件中指定的包路径不正确,或者是MyEclipse的自动编译功能未更新类路径引起的。 **解决方案**: - 确认所有在配置文件中提及的包路径是正确的,且已存在于项目中。 - 清理并重新构建项目,以...
**原因分析**:这通常是由于类路径中缺少`jta.jar`文件导致的。 **解决方案**: 1. 添加`jta.jar`到项目的类路径中。 2. 如果使用Maven或Gradle,可以在`pom.xml`或`build.gradle`中添加相应的依赖。 3. 重新构建...
- **问题**:如果出现“Dialect not found”异常,可能是由于配置文件中dialect设置错误。 - **解决方法**:检查并修正dialect配置。 2. **列名拼写错误**: - **问题**:如果出现数据不能更新的情况,可能是...
- **异常处理**:在开发过程中遇到的异常要及时排查并解决,比如常见的ClassNotFoundException、NoSuchMethodError等,这些问题通常是由于依赖问题或配置错误引起的。 - **性能优化**:在完成基本的SSH整合后,还...
### Java遇到的各种异常 在Java开发过程中,遇到...以上是根据给定的文件内容整理的Java开发过程中可能遇到的一些常见异常及其处理方法。通过了解这些异常的原因并采取适当的措施,可以帮助开发者更高效地解决问题。
- **排除不必要的 jar 文件:** 在项目构建路径中排除那些引起冲突的 jar 文件。 - **统一版本管理:** 使用 Maven 或 Gradle 等构建工具来统一管理项目依赖的版本,避免手动引入冲突的 jar 文件。 以上是针对 Java...
1. **添加依赖**:首先,你需要将P6Spy的JAR文件(如`p6spy-2.1.0.jar`)添加到项目的类路径中。如果是Maven项目,可以在`pom.xml`中添加对应的依赖条目。 2. **配置代理驱动**:在`jdbc.properties`或类似配置文件...