然后,在 的末尾添加了 变量。并为其赋予最大值根据这个
然后一切都解决了。那个问题不再困扰我了。
解决方法我一直 在使用MySQL在tomcat7上使用hibernate3 开发一个 struts Web应用程序 。起初我一直在使用c3p0pooling …然后我切换到 tomcat pooling 。但是一天后,我得到了同样的错误。每天早晨,我们必须重新启动服务器。
日志显示java.lang.NullPointerException如下
sm.Login.execute(Login.java:24)sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)java.lang.reflect.Method.invoke(Unknown Source)com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452) com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:270)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)interceptors.SessionCheck.intercept(SessionCheck.java:47)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)interceptors.LoginInterceptor.intercept(LoginInterceptor.java:43)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498)org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
我的META-INF / context.xml在这里,
<?xml version='1.0' encoding='UTF-8'?> <Context antiJARLocking='true' path='/sealmanagement'>RemoveAbandoned='true'maxAllowed='150' maxIdle='15'name='jdbc/stockdb'type='javax.sql.DataSource' factory='org.apache.tomcat.jdbc.pool.DataSourceFactory' url='jdbc:mysql://localhost:3306/stockdb?autoReconnect=true' driverClassName='com.mysql.jdbc.Driver' username='root' password='1234' jmxEnabled='true' testWhileIdle='true' testOnBorrow='true' validationQuery='SELECT 1' testOnReturn='true' validationInterval='3000' timeBetweenEvictionRunsMillis='30000' maxActive='100' initialSize='10' maxWait='1000' minEvictableIdleTimeMillis='30000' minIdle='10' logAbandoned='true'
jdbcInterceptors =“ org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer”
/>
然后是hibernate.cfg.xml,
<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC'-//Hibernate/Hibernate Configuration DTD 3.0//EN''http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd'><hibernate-configuration> <session-factory> <!-- using container-managed JNDI --><property name='hibernate.connection.datasource'>java:comp/env/jdbc/stockdb</property><property name='hibernate.dialect'>org.hibernate.dialect.MySQLDialect</property><property name='hibernate.current_session_context_class'>org.hibernate.context.ThreadLocalSessionContext</property>
package dbcon;import org.hibernate.cfg.AnnotationConfiguration;import org.hibernate.SessionFactory;/** * Hibernate Utility class with a convenient method to get Session Factory object. * * */public class HibernateUtil { private static final SessionFactory sessionFactory; static {try { // Create the SessionFactory from standard (hibernate.cfg.xml) // config file. sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();} catch (Throwable ex) { // Log the exception. System.err.println('Initial SessionFactory creation failed.' + ex); throw new ExceptionInInitializerError(ex);} } public static SessionFactory getSessionFactory() {return sessionFactory; }}
事件,尽管它不影响我也将PoolProperties类也放在Java代码中。可能是问题…
这是Getdbcon.java
package dbcon;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import org.apache.tomcat.jdbc.pool.DataSource;import org.apache.tomcat.jdbc.pool.PoolProperties;public class Getdbcon { //get mysql connection // -- shehan public Connection getmysqlConnection() throws SQLException {PoolProperties p = new PoolProperties();p.setUrl('jdbc:mysql://localhost:3306/stockdb?auto_reconnect=true');p.setDriverClassName('com.mysql.jdbc.Driver');p.setUsername('root');p.setPassword('1234');p.setJmxEnabled(true);p.setTestWhileIdle(true);p.setTestOnBorrow(true);p.setValidationQuery('SELECT * from userlogin where 1 limit 1');p.setTestOnReturn(true);p.setValidationInterval(30000);p.setTimeBetweenEvictionRunsMillis(30000);p.setMaxActive(100);p.setInitialSize(2);p.setMaxWait(10000);p.setMinEvictableIdleTimeMillis(30000);p.setMinIdle(10);p.setLogAbandoned(true);p.setRemoveAbandoned(false); p.setJdbcInterceptors('org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer');DataSource datasource = new DataSource();datasource.setPoolProperties(p);Connection con = null;try{con = datasource.getConnection();}catch(Exception e){ e.printStackTrace();}return con; }
这里是tomcat启动日志控制台的一些代码…认为它们很有用
INFO: JDBC driver: MySQL-AB JDBC Driver,version: mysql-connector-java-5.1.6 ( Revision: ${svn.Revision} )Mar 15,2013 9:00:08 AM org.hibernate.dialect.Dialect <init>INFO: Using dialect: org.hibernate.dialect.MySQLDialectMar 15,2013 9:00:08 AM org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactoryINFO: Using default transaction strategy (direct JDBC transactions)Mar 15,2013 9:00:08 AM org.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookupINFO: No TransactionManagerLookup configured (in JTA environment,use of read-write or transactional second-level cache is not recommended)Mar 15,2013 9:00:08 AM org.hibernate.cfg.SettingsFactory buildSettingsINFO: Automatic flush during beforeCompletion(): disabledMar 15,2013 9:00:08 AM org.hibernate.cfg.SettingsFactory buildSettingsINFO: Automatic session close at end of transaction: disabled
请对此进行关注。非常感谢您。