org.hibernate.cfg.Environment.java

本文介绍Hibernate配置信息,包括SessionFactory和系统级配置。详细解释了各种配置项的意义及使用方式。

 

该类为hibernate处理环境配置相关信息的类,这些配置信息包括两个级别

1. SessionFactory SESSION工厂级别的配置信息

2. Hibernate允许环境相关配置信息,比如数据库连接池信息,代理实现配置,二级缓存框架,默认情况下位EHCache缓存框架

 

hibernate配置信息属性文件为hibernate.properties,在hibernate.jar中有默认配置文件,大家配置的时候可以参考这里面的默认配置。

 

随着hibernate版本变更,会有一些属性配置,在新版本中不再支持,或者属性键值变更,在该类里的日志文件都会有相关提示并警告

eg: hibernate.cglib.use_reflection_optimizer >> hibernate.bytecode.use_reflection_optimizer

等等在此不再列举,大家可以看看该类说明。

 

通过Environment.getProperties();返回所有配置信息.................

 


package org.hibernate.cfg;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.hibernate.HibernateException;
import org.hibernate.bytecode.BytecodeProvider;
import org.hibernate.util.ConfigHelper;
import org.hibernate.util.PropertiesHelper;


/**
 * Provides access to configuration info passed in <tt>Properties</tt> objects.
 * <br><br>
 * Hibernate has two property scopes:
 * <ul>
 * <li><b>Factory-level</b> properties may be passed to the <tt>SessionFactory</tt> when it
 * instantiated. Each instance might have different property values. If no
 * properties are specified, the factory calls <tt>Environment.getProperties()</tt>.
 * <li><b>System-level</b> properties are shared by all factory instances and are always
 * determined by the <tt>Environment</tt> properties.
 * </ul>
 * The only system-level properties are
 * <ul>
 * <li><tt>hibernate.jdbc.use_streams_for_binary</tt>
 * <li><tt>hibernate.cglib.use_reflection_optimizer</tt>
 * </ul>
 * <tt>Environment</tt> properties are populated by calling <tt>System.getProperties()</tt>
 * and then from a resource named <tt>/hibernate.properties</tt> if it exists. System
 * properties override properties specified in <tt>hibernate.properties</tt>.<br>
 * <br>
 * The <tt>SessionFactory</tt> is controlled by the following properties.
 * Properties may be either be <tt>System</tt> properties, properties
 * defined in a resource named <tt>/hibernate.properties</tt> or an instance of
 * <tt>java.util.Properties</tt> passed to
 * <tt>Configuration.buildSessionFactory()</tt><br>
 * <br>
 * <table>
 * <tr><td><b>property</b></td><td><b>meaning</b></td></tr>
 * <tr>
 *   <td><tt>hibernate.dialect</tt></td>
 *   <td>classname of <tt>org.hibernate.dialect.Dialect</tt> subclass</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.cache.provider_class</tt></td>
 *   <td>classname of <tt>org.hibernate.cache.CacheProvider</tt>
 *   subclass (if not specified EHCache is used)</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.connection.provider_class</tt></td>
 *   <td>classname of <tt>org.hibernate.connection.ConnectionProvider</tt>
 *   subclass (if not specified hueristics are used)</td>
 * </tr>
 * <tr><td><tt>hibernate.connection.username</tt></td><td>database username</td></tr>
 * <tr><td><tt>hibernate.connection.password</tt></td><td>database password</td></tr>
 * <tr>
 *   <td><tt>hibernate.connection.url</tt></td>
 *   <td>JDBC URL (when using <tt>java.sql.DriverManager</tt>)</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.connection.driver_class</tt></td>
 *   <td>classname of JDBC driver</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.connection.isolation</tt></td>
 *   <td>JDBC transaction isolation level (only when using
 *     <tt>java.sql.DriverManager</tt>)
 *   </td>
 * </tr>
 *   <td><tt>hibernate.connection.pool_size</tt></td>
 *   <td>the maximum size of the connection pool (only when using
 *     <tt>java.sql.DriverManager</tt>)
 *   </td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.connection.datasource</tt></td>
 *   <td>databasource JNDI name (when using <tt>javax.sql.Datasource</tt>)</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.jndi.url</tt></td><td>JNDI <tt>InitialContext</tt> URL</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.jndi.class</tt></td><td>JNDI <tt>InitialContext</tt> classname</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.max_fetch_depth</tt></td>
 *   <td>maximum depth of outer join fetching</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.jdbc.batch_size</tt></td>
 *   <td>enable use of JDBC2 batch API for drivers which support it</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.jdbc.fetch_size</tt></td>
 *   <td>set the JDBC fetch size</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.jdbc.use_scrollable_resultset</tt></td>
 *   <td>enable use of JDBC2 scrollable resultsets (you only need this specify
 *   this property when using user supplied connections)</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.jdbc.use_getGeneratedKeys</tt></td>
 *   <td>enable use of JDBC3 PreparedStatement.getGeneratedKeys() to retrieve
 *   natively generated keys after insert. Requires JDBC3+ driver and JRE1.4+</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.hbm2ddl.auto</tt></td>
 *   <td>enable auto DDL export</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.default_schema</tt></td>
 *   <td>use given schema name for unqualified tables (always optional)</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.default_catalog</tt></td>
 *   <td>use given catalog name for unqualified tables (always optional)</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.session_factory_name</tt></td>
 *   <td>If set, the factory attempts to bind this name to itself in the
 *   JNDI context. This name is also used to support cross JVM <tt>
 *   Session</tt> (de)serialization.</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.transaction.manager_lookup_class</tt></td>
 *   <td>classname of <tt>org.hibernate.transaction.TransactionManagerLookup</tt>
 *   implementor</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.transaction.factory_class</tt></td>
 *   <td>the factory to use for instantiating <tt>Transaction</tt>s.
 *   (Defaults to <tt>JDBCTransactionFactory</tt>.)</td>
 * </tr>
 * <tr>
 *   <td><tt>hibernate.query.substitutions</tt></td><td>query language token substitutions</td>
 * </tr>
 * </table>
 *
 * @see org.hibernate.SessionFactory
 * @author Gavin King
 */
public final class Environment {

 public static final String VERSION = "3.1.2";

 /**
  * <tt>ConnectionProvider</tt> implementor to use when obtaining connections
  */
 public static final String CONNECTION_PROVIDER ="hibernate.connection.provider_class";
 /**
  * JDBC driver class
  */
 public static final String DRIVER ="hibernate.connection.driver_class";
 /**
  * JDBC transaction isolation level
  */
 public static final String ISOLATION ="hibernate.connection.isolation";
 /**
  * JDBC URL
  */
 public static final String URL ="hibernate.connection.url";
 /**
  * JDBC user
  */
 public static final String USER ="hibernate.connection.username";
 /**
  * JDBC password
  */
 public static final String PASS ="hibernate.connection.password";
 /**
  * JDBC autocommit mode
  */
 public static final String AUTOCOMMIT ="hibernate.connection.autocommit";
 /**
  * Maximum number of inactive connections for Hibernate's connection pool
  */
 public static final String POOL_SIZE ="hibernate.connection.pool_size";
 /**
  * <tt>java.sql.Datasource</tt> JNDI name
  */
 public static final String DATASOURCE ="hibernate.connection.datasource";
 /**
  * prefix for arbitrary JDBC connection properties
  */
 public static final String CONNECTION_PREFIX = "hibernate.connection";

 /**
  * JNDI initial context class, <tt>Context.INITIAL_CONTEXT_FACTORY</tt>
  */
 public static final String JNDI_CLASS ="hibernate.jndi.class";
 /**
  * JNDI provider URL, <tt>Context.PROVIDER_URL</tt>
  */
 public static final String JNDI_URL ="hibernate.jndi.url";
 /**
  * prefix for arbitrary JNDI <tt>InitialContext</tt> properties
  */
 public static final String JNDI_PREFIX = "hibernate.jndi";
 /**
  * JNDI name to bind to <tt>SessionFactory</tt>
  */
 public static final String SESSION_FACTORY_NAME = "hibernate.session_factory_name";

 /**
  * Hibernate SQL <tt>Dialect</tt> class
  */
 public static final String DIALECT ="hibernate.dialect";
 /**
  * A default database schema (owner) name to use for unqualified tablenames
  */
 public static final String DEFAULT_SCHEMA = "hibernate.default_schema";
 /**
  * A default database catalog name to use for unqualified tablenames
  */
 public static final String DEFAULT_CATALOG = "hibernate.default_catalog";

 /**
  * Enable logging of generated SQL to the console
  */
 public static final String SHOW_SQL ="hibernate.show_sql";
 /**
  * Enable formatting of SQL logged to the console
  */
 public static final String FORMAT_SQL ="hibernate.format_sql";
 /**
  * Add comments to the generated SQL
  */
 public static final String USE_SQL_COMMENTS ="hibernate.use_sql_comments";
 /**
  * Maximum depth of outer join fetching
  */
 public static final String MAX_FETCH_DEPTH = "hibernate.max_fetch_depth";
 /**
  * The default batch size for batch fetching
  */
 public static final String DEFAULT_BATCH_FETCH_SIZE = "hibernate.default_batch_fetch_size";
 /**
  * Use <tt>java.io</tt> streams to read / write binary data from / to JDBC
  */
 public static final String USE_STREAMS_FOR_BINARY = "hibernate.jdbc.use_streams_for_binary";
 /**
  * Use JDBC scrollable <tt>ResultSet</tt>s. This property is only necessary when there is
  * no <tt>ConnectionProvider</tt>, ie. the user is supplying JDBC connections.
  */
 public static final String USE_SCROLLABLE_RESULTSET = "hibernate.jdbc.use_scrollable_resultset";
 /**
  * Tells the JDBC driver to attempt to retrieve row Id with the JDBC 3.0 PreparedStatement.getGeneratedKeys()
  * method. In general, performance will be better if this property is set to true and the underlying
  * JDBC driver supports getGeneratedKeys().
  */
 public static final String USE_GET_GENERATED_KEYS = "hibernate.jdbc.use_get_generated_keys";
 /**
  * Gives the JDBC driver a hint as to the number of rows that should be fetched from the database
  * when more rows are needed. If <tt>0</tt>, JDBC driver default settings will be used.
  */
 public static final String STATEMENT_FETCH_SIZE = "hibernate.jdbc.fetch_size";
 /**
  * Maximum JDBC batch size. A nonzero value enables batch updates.
  */
 public static final String STATEMENT_BATCH_SIZE = "hibernate.jdbc.batch_size";
 /**
  * Select a custom batcher.
  */
 public static final String BATCH_STRATEGY = "hibernate.jdbc.factory_class";
 /**
  * Should versioned data be included in batching?
  */
 public static final String BATCH_VERSIONED_DATA = "hibernate.jdbc.batch_versioned_data";
 /**
  * An XSLT resource used to generate "custom" XML
  */
 public static final String OUTPUT_STYLESHEET ="hibernate.xml.output_stylesheet";

 /**
  * Maximum size of C3P0 connection pool
  */
 public static final String C3P0_MAX_SIZE = "hibernate.c3p0.max_size";
 /**
  * Minimum size of C3P0 connection pool
  */
 public static final String C3P0_MIN_SIZE = "hibernate.c3p0.min_size";

 /**
  * Maximum idle time for C3P0 connection pool
  */
 public static final String C3P0_TIMEOUT = "hibernate.c3p0.timeout";
 /**
  * Maximum size of C3P0 statement cache
  */
 public static final String C3P0_MAX_STATEMENTS = "hibernate.c3p0.max_statements";
 /**
  * Number of connections acquired when pool is exhausted
  */
 public static final String C3P0_ACQUIRE_INCREMENT = "hibernate.c3p0.acquire_increment";
 /**
  * Idle time before a C3P0 pooled connection is validated
  */
 public static final String C3P0_IDLE_TEST_PERIOD = "hibernate.c3p0.idle_test_period";

 /**
  * Proxool/Hibernate property prefix
  */
 public static final String PROXOOL_PREFIX = "hibernate.proxool";
 /**
  * Proxool property to configure the Proxool Provider using an XML (<tt>/path/to/file.xml</tt>)
  */
 public static final String PROXOOL_XML = "hibernate.proxool.xml";
 /**
  * Proxool property to configure the Proxool Provider  using a properties file (<tt>/path/to/proxool.properties</tt>)
  */
 public static final String PROXOOL_PROPERTIES = "hibernate.proxool.properties";
 /**
  * Proxool property to configure the Proxool Provider from an already existing pool (<tt>true</tt> / <tt>false</tt>)
  */
 public static final String PROXOOL_EXISTING_POOL = "hibernate.proxool.existing_pool";
 /**
  * Proxool property with the Proxool pool alias to use
  * (Required for <tt>PROXOOL_EXISTING_POOL</tt>, <tt>PROXOOL_PROPERTIES</tt>, or
  * <tt>PROXOOL_XML</tt>)
  */
 public static final String PROXOOL_POOL_ALIAS = "hibernate.proxool.pool_alias";

 /**
  * Enable automatic session close at end of transaction
  */
 public static final String AUTO_CLOSE_SESSION = "hibernate.transaction.auto_close_session";
 /**
  * Enable automatic flush during the JTA <tt>beforeCompletion()</tt> callback
  */
 public static final String FLUSH_BEFORE_COMPLETION = "hibernate.transaction.flush_before_completion";
 /**
  * Specifies how Hibernate should release JDBC connections.
  */
 public static final String RELEASE_CONNECTIONS = "hibernate.connection.release_mode";
 /**
  * Context scoping impl for {@link org.hibernate.SessionFactory#getCurrentSession()} processing.
  */
 public static final String CURRENT_SESSION_CONTEXT_CLASS = "hibernate.current_session_context_class";
 /**
  * <tt>TransactionFactory</tt> implementor to use for creating <tt>Transaction</tt>s
  */
 public static final String TRANSACTION_STRATEGY = "hibernate.transaction.factory_class";
 /**
  * <tt>TransactionManagerLookup</tt> implementor to use for obtaining the <tt>TransactionManager</tt>
  */
 public static final String TRANSACTION_MANAGER_STRATEGY = "hibernate.transaction.manager_lookup_class";
 /**
  * JNDI name of JTA <tt>UserTransaction</tt> object
  */
 public static final String USER_TRANSACTION = "jta.UserTransaction";

 /**
  * The <tt>CacheProvider</tt> implementation class
  */
 public static final String CACHE_PROVIDER = "hibernate.cache.provider_class";
 /**
  * The <tt>CacheProvider</tt> JNDI namespace, if pre-bound to JNDI.
  */
 public static final String CACHE_NAMESPACE = "hibernate.cache.jndi";
 /**
  * Enable the query cache (disabled by default)
  */
 public static final String USE_QUERY_CACHE = "hibernate.cache.use_query_cache";
 /**
  * The <tt>QueryCacheFactory</tt> implementation class.
  */
 public static final String QUERY_CACHE_FACTORY = "hibernate.cache.query_cache_factory";
 /**
  * Enable the second-level cache (enabled by default)
  */
 public static final String USE_SECOND_LEVEL_CACHE = "hibernate.cache.use_second_level_cache";
 /**
  * Optimize the cache for mimimal puts instead of minimal gets
  */
 public static final String USE_MINIMAL_PUTS = "hibernate.cache.use_minimal_puts";
 /**
  * The <tt>CacheProvider</tt> region name prefix
  */
 public static final String CACHE_REGION_PREFIX = "hibernate.cache.region_prefix";
 /**
  * Enable use of structured second-level cache entries
  */
 public static final String USE_STRUCTURED_CACHE = "hibernate.cache.use_structured_entries";

 /**
  * Enable statistics collection
  */
 public static final String GENERATE_STATISTICS = "hibernate.generate_statistics";

 public static final String USE_IDENTIFIER_ROLLBACK = "hibernate.use_identifier_rollback";

 /**
  * Use CGLIB <tt>MetaClass</tt> to optimize property access
  */
 public static final String USE_REFLECTION_OPTIMIZER = "hibernate.bytecode.use_reflection_optimizer";

 /**
  * The classname of the HQL query parser factory
  */
 public static final String QUERY_TRANSLATOR = "hibernate.query.factory_class";
 /**
  * A comma-seperated list of token substitutions to use when translating a Hibernate
  * query to SQL
  */
 public static final String QUERY_SUBSTITUTIONS = "hibernate.query.substitutions";
 /**
  * Auto export/update schema using hbm2ddl tool. Valid values are <tt>update</tt>,
  * <tt>create</tt>, <tt>create-drop</tt> and <tt>validate</tt>.
  */
 public static final String HBM2DDL_AUTO = "hibernate.hbm2ddl.auto";

 /**
  * The {@link org.hibernate.exception.SQLExceptionConverter} to use for converting SQLExceptions
  * to Hibernate's JDBCException hierarchy.  The default is to use the configured
  * {@link org.hibernate.dialect.Dialect}'s preferred SQLExceptionConverter.
  */
 public static final String SQL_EXCEPTION_CONVERTER = "hibernate.jdbc.sql_exception_converter";

 /**
  * Enable wrapping of JDBC result sets in order to speed up column name lookups for
  * broken JDBC drivers
  */
 public static final String WRAP_RESULT_SETS = "hibernate.jdbc.wrap_result_sets";

 /**
  * Enable ordering of update statements by primary key value
  */
 public static final String ORDER_UPDATES = "hibernate.order_updates";

 /**
  * The EntityMode in which set the Session opened from the SessionFactory.
  */
    public static final String DEFAULT_ENTITY_MODE = "hibernate.default_entity_mode";
   
    /**
     * The jacc context id of the deployment
     */
    public static final String JACC_CONTEXTID = "hibernate.jacc_context_id";

 public static final String BYTECODE_PROVIDER = "hibernate.bytecode.provider";


 private static final BytecodeProvider BYTECODE_PROVIDER_INSTANCE;
 private static final boolean ENABLE_BINARY_STREAMS;
 private static final boolean ENABLE_REFLECTION_OPTIMIZER;
 private static final boolean JVM_SUPPORTS_LINKED_HASH_COLLECTIONS;
 private static final boolean JVM_HAS_TIMESTAMP_BUG;
 private static final boolean JVM_HAS_JDK14_TIMESTAMP;
 private static final boolean JVM_SUPPORTS_GET_GENERATED_KEYS;

 private static final Properties GLOBAL_PROPERTIES;
 private static final HashMap ISOLATION_LEVELS = new HashMap();
 private static final Map OBSOLETE_PROPERTIES = new HashMap();
 private static final Map RENAMED_PROPERTIES = new HashMap();

 private static final Log log = LogFactory.getLog(Environment.class);

 /**
  * Issues warnings to the user when any obsolete property names are used.
  */
 public static void verifyProperties(Properties props) {
  Iterator iter = props.keySet().iterator();
  Map propertiesToAdd = new HashMap();
  while ( iter.hasNext() ) {
   final Object propertyName = iter.next();
   Object newPropertyName = OBSOLETE_PROPERTIES.get( propertyName );
   if ( newPropertyName != null ) {
    log.warn( "Usage of obsolete property: " + propertyName + " no longer supported, use: " + newPropertyName );
   }
   newPropertyName = RENAMED_PROPERTIES.get( propertyName );
   if ( newPropertyName != null ) {
    log.warn( "Property [" + propertyName + "] has been renamed to [" + newPropertyName + "]; update your properties appropriately" );
    if ( ! props.containsKey( newPropertyName ) ) {     
     propertiesToAdd.put( newPropertyName, props.get( propertyName ) );
    }
   }
  }
  props.putAll(propertiesToAdd);
 }

 static {

  log.info("Hibernate " + VERSION);

  RENAMED_PROPERTIES.put( "hibernate.cglib.use_reflection_optimizer", USE_REFLECTION_OPTIMIZER );

  ISOLATION_LEVELS.put( new Integer(Connection.TRANSACTION_NONE), "NONE" );
  ISOLATION_LEVELS.put( new Integer(Connection.TRANSACTION_READ_UNCOMMITTED), "READ_UNCOMMITTED" );
  ISOLATION_LEVELS.put( new Integer(Connection.TRANSACTION_READ_COMMITTED), "READ_COMMITTED" );
  ISOLATION_LEVELS.put( new Integer(Connection.TRANSACTION_REPEATABLE_READ), "REPEATABLE_READ" );
  ISOLATION_LEVELS.put( new Integer(Connection.TRANSACTION_SERIALIZABLE), "SERIALIZABLE" );

  GLOBAL_PROPERTIES = new Properties();
  GLOBAL_PROPERTIES.setProperty( USE_REFLECTION_OPTIMIZER, Boolean.TRUE.toString() );

  try {
   InputStream stream = ConfigHelper.getResourceAsStream("/hibernate.properties");
   try {
    GLOBAL_PROPERTIES.load(stream);
    log.info( "loaded properties from resource hibernate.properties: " + PropertiesHelper.maskOut(GLOBAL_PROPERTIES, PASS) );
   }
   catch (Exception e) {
    log.error("problem loading properties from hibernate.properties");
   }
   finally {
    try{
     stream.close();
    }
    catch (IOException ioe){
     log.error("could not close stream on hibernate.properties", ioe);
    }
   }
  }
  catch (HibernateException he) {
   log.info("hibernate.properties not found");
  }

  try {
   GLOBAL_PROPERTIES.putAll( System.getProperties() );
  }
  catch (SecurityException se) {
   log.warn("could not copy system properties, system properties will be ignored");
  }

  verifyProperties(GLOBAL_PROPERTIES);

  ENABLE_BINARY_STREAMS = PropertiesHelper.getBoolean(USE_STREAMS_FOR_BINARY, GLOBAL_PROPERTIES);
  ENABLE_REFLECTION_OPTIMIZER = PropertiesHelper.getBoolean(USE_REFLECTION_OPTIMIZER, GLOBAL_PROPERTIES);

  if (ENABLE_BINARY_STREAMS) {
   log.info("using java.io streams to persist binary types");
  }
  if (ENABLE_REFLECTION_OPTIMIZER) {
   log.info("using bytecode reflection optimizer");
  }
  BYTECODE_PROVIDER_INSTANCE = buildBytecodeProvider( GLOBAL_PROPERTIES );

  boolean getGeneratedKeysSupport;
  try {
   Statement.class.getMethod("getGeneratedKeys", null);
   getGeneratedKeysSupport = true;
  }
  catch (NoSuchMethodException nsme) {
   getGeneratedKeysSupport = false;
  }
  JVM_SUPPORTS_GET_GENERATED_KEYS = getGeneratedKeysSupport;
  if (!JVM_SUPPORTS_GET_GENERATED_KEYS) log.info("JVM does not support Statement.getGeneratedKeys()");

  boolean linkedHashSupport;
  try {
   Class.forName("java.util.LinkedHashSet");
   linkedHashSupport = true;
  }
  catch (ClassNotFoundException cnfe) {
   linkedHashSupport = false;
  }
  JVM_SUPPORTS_LINKED_HASH_COLLECTIONS = linkedHashSupport;
  if (!JVM_SUPPORTS_LINKED_HASH_COLLECTIONS) log.info("JVM does not support LinkedHasMap, LinkedHashSet - ordered maps and sets disabled");

  JVM_HAS_TIMESTAMP_BUG = new Timestamp(123456789).getTime() != 123456789;
  if (JVM_HAS_TIMESTAMP_BUG) log.info("using workaround for JVM bug in java.sql.Timestamp");
  Timestamp t = new Timestamp(0);
  t.setNanos(5 * 1000000);
  JVM_HAS_JDK14_TIMESTAMP = t.getTime() == 5;
  if (JVM_HAS_JDK14_TIMESTAMP) {
   log.info("using JDK 1.4 java.sql.Timestamp handling");
  }
  else {
   log.info("using pre JDK 1.4 java.sql.Timestamp handling");
  }
 }

 public static BytecodeProvider getBytecodeProvider() {
  return BYTECODE_PROVIDER_INSTANCE;
 }

 /**
  * Does this JVM have the IBM JDK 1.3.1. The bug is <tt>new Timestamp(x).getTime()!=x</tt>.
  */
 public static boolean jvmHasTimestampBug() {
  return JVM_HAS_TIMESTAMP_BUG;
 }

 /**
  * Does this JVM handle <tt>Timestamp</tt> in the JDK 1.4 compliant way?
  */
 public static boolean jvmHasJDK14Timestamp() {
  return JVM_HAS_JDK14_TIMESTAMP;
 }

 /**
  * Does this JVM support <tt>LinkedHashSet</tt>, <tt>LinkedHashMap</tt>.
  * @see java.util.LinkedHashSet
  * @see java.util.LinkedHashMap
  */
 public static boolean jvmSupportsLinkedHashCollections() {
  return JVM_SUPPORTS_LINKED_HASH_COLLECTIONS;
 }

 public static boolean jvmSupportsGetGeneratedKeys() {
  return JVM_SUPPORTS_GET_GENERATED_KEYS;
 }

 /**
  * Should we use streams to bind binary types to JDBC IN parameters.
  * Property <tt>hibernate.jdbc.use_streams_for_binary</tt>.
  * @see Environment#USE_STREAMS_FOR_BINARY
  */
 public static boolean useStreamsForBinary() {
  return ENABLE_BINARY_STREAMS;
 }

 /**
  * Should we use CGLIB reflection optimizer.
  * Property <tt>hibernate.jdbc.use_refection_optimizer</tt>.
  * @see Environment#USE_REFLECTION_OPTIMIZER
  */
 public static boolean useReflectionOptimizer() {
  return ENABLE_REFLECTION_OPTIMIZER;
 }

 private Environment() { throw new UnsupportedOperationException(); }

 /**
  * Return <tt>System</tt> properties, extended by any properties specified
  * in <tt>hibernate.properties</tt>.
  * @return Properties
  */
 public static Properties getProperties() {
  Properties copy = new Properties();
  copy.putAll(GLOBAL_PROPERTIES);
  return copy;
 }

 /**
  * Get the name of a JDBC transaction isolation level
  *
  * @see java.sql.Connection
  * @param isolation as defined by <tt>java.sql.Connection</tt>
  * @return a human-readable name
  */
 public static String isolationLevelToString(int isolation) {
  return (String) ISOLATION_LEVELS.get( new Integer(isolation) );
 }


 public static BytecodeProvider buildBytecodeProvider(Properties properties) {
  String provider = PropertiesHelper.getString( Environment.BYTECODE_PROVIDER, properties, "cglib" );
  log.info( "Bytecode provider name : " + provider );
  return buildBytecodeProvider( provider );
 }

 private static BytecodeProvider buildBytecodeProvider(String providerName) {
  if ( "javassist".equals( providerName ) ) {
   return new org.hibernate.bytecode.javassist.BytecodeProviderImpl();
  }
  else if ( "cglib".equals( providerName ) ) {
   return new org.hibernate.bytecode.cglib.BytecodeProviderImpl();
  }
  else {
   log.warn( "unrecognized bytecode provider [" + providerName + "], using cglib by default" );
   return new org.hibernate.bytecode.cglib.BytecodeProviderImpl();
  }
 }

}

.nbcio.modules.flowable.flow.FlowableConfig:49 - ╔══════════════════════════════════════════╗ 2025-09-03 15:09:14.749 [main] INFO com.nbcio.modules.flowable.flow.FlowableConfig:50 - ║ 正在配置Flowable引擎 (v6.7.2) 2025-09-03 15:09:14.749 [main] INFO com.nbcio.modules.flowable.flow.FlowableConfig:51 - ║ Spring Boot版本: 2.4.x 2025-09-03 15:09:14.749 [main] INFO com.nbcio.modules.flowable.flow.FlowableConfig:52 - ╚══════════════════════════════════════════╝ 2025-09-03 15:09:14.750 [main] INFO com.nbcio.modules.flowable.flow.FlowableConfig:59 - ✅ 数据源和事务管理器已正确注入 2025-09-03 15:09:14.769 [main] INFO com.nbcio.modules.flowable.flow.FlowableConfig:68 - 🔗 数据源信息: jdbc:mysql://192.168.8.3:3306/yaxt-micro?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai 2025-09-03 15:09:14.769 [main] INFO com.nbcio.modules.flowable.flow.FlowableConfig:75 - 🔀 事务管理器: JpaTransactionManager 2025-09-03 15:09:14.769 [main] INFO com.nbcio.modules.flowable.flow.FlowableConfig:79 - 🔄 数据库Schema更新策略: true (自动更新) 2025-09-03 15:09:14.769 [main] INFO com.nbcio.modules.flowable.flow.FlowableConfig:81 - 💾 数据库类型: mysql 2025-09-03 15:09:14.769 [main] INFO com.nbcio.modules.flowable.flow.FlowableConfig:86 - 🚫 已禁用IDM引擎和事件注册表 2025-09-03 15:09:15.013 [main] INFO com.nbcio.modules.flowable.flow.FlowableConfig:100 - ✅ Flowable引擎初始化成功! 2025-09-03 15:09:15.013 [main] INFO com.nbcio.modules.flowable.flow.FlowableConfig:101 - 🔧 Flowable版本: 6.7.2.0 2025-09-03 15:09:15.014 [main] INFO com.nbcio.modules.flowable.flow.FlowableConfig:102 - ⏱️ 启动耗时: 15657 ms 2025-09-03 15:09:15.741 [main] INFO o.f.c.engine.impl.async.DefaultAsyncTaskExecutor:154 - Creating thread pool queue of size 2048 2025-09-03 15:09:15.742 [main] INFO o.f.c.engine.impl.async.DefaultAsyncTaskExecutor:159 - Creating thread factory with naming pattern flowable-async-job-executor-thread-%d 2025-09-03 15:09:15.744 [main] INFO o.f.c.engine.impl.async.DefaultAsyncTaskExecutor:164 - Creating executor service with corePoolSize 8, maxPoolSize 8 and keepAliveTime 5000 2025-09-03 15:09:15.982 [main] ERROR o.f.common.engine.impl.interceptor.CommandContext:125 - Error while closing command context java.lang.NullPointerException: null at org.flowable.engine.impl.db.ProcessDbSchemaManager.schemaUpdate(ProcessDbSchemaManager.java:232) at org.flowable.engine.impl.SchemaOperationsProcessEngineBuild.execute(SchemaOperationsProcessEngineBuild.java:54) at org.flowable.engine.impl.SchemaOperationsProcessEngineBuild.execute(SchemaOperationsProcessEngineBuild.java:28) at org.flowable.engine.impl.interceptor.CommandInvoker$1.run(CommandInvoker.java:67) at org.flowable.engine.impl.interceptor.CommandInvoker.executeOperation(CommandInvoker.java:140) at org.flowable.engine.impl.interceptor.CommandInvoker.executeOperations(CommandInvoker.java:114) at org.flowable.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:72) at org.flowable.engine.impl.interceptor.BpmnOverrideContextInterceptor.execute(BpmnOverrideContextInterceptor.java:26) at org.flowable.common.engine.impl.interceptor.TransactionContextInterceptor.execute(TransactionContextInterceptor.java:53) at org.flowable.common.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:105) at org.flowable.common.spring.SpringTransactionInterceptor.lambda$execute$0(SpringTransactionInterceptor.java:57) at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) at org.flowable.common.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:57) at org.flowable.common.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:30) at org.flowable.common.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:56) at org.flowable.engine.impl.ProcessEngineImpl.<init>(ProcessEngineImpl.java:83) at org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl.buildProcessEngine(ProcessEngineConfigurationImpl.java:917) at org.flowable.spring.SpringProcessEngineConfiguration.buildProcessEngine(SpringProcessEngineConfiguration.java:76) at org.flowable.spring.ProcessEngineFactoryBean.getObject(ProcessEngineFactoryBean.java:59) at org.flowable.spring.ProcessEngineFactoryBean.getObject(ProcessEngineFactoryBean.java:32) at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:169) at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:101) at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1828) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getObjectForBeanInstance(AbstractAutowireCapableBeanFactory.java:1265) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1307) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:884) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:538) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1336) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1176) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1307) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:884) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:227) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1356) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1203) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1307) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:884) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:227) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1356) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1203) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207) at org.springframework.context.event.AbstractApplicationEventMulticaster.retrieveApplicationListeners(AbstractApplicationEventMulticaster.java:247) at org.springframework.context.event.AbstractApplicationEventMulticaster.getApplicationListeners(AbstractApplicationEventMulticaster.java:204) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:134) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:404) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:410) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:361) at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:898) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:554) at org.springframework.cloud.context.named.NamedContextFactory.createContext(NamedContextFactory.java:136) at org.springframework.cloud.context.named.NamedContextFactory.getContext(NamedContextFactory.java:101) at org.springframework.cloud.context.named.NamedContextFactory.getInstance(NamedContextFactory.java:145) at org.springframework.cloud.openfeign.FeignClientFactoryBean.get(FeignClientFactoryBean.java:264) at org.springframework.cloud.openfeign.FeignClientFactoryBean.feign(FeignClientFactoryBean.java:97) at org.springframework.cloud.openfeign.FeignClientFactoryBean.getTarget(FeignClientFactoryBean.java:320) at org.springframework.cloud.openfeign.FeignClientFactoryBean.getObject(FeignClientFactoryBean.java:310) at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:169) at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:101) at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1828) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getObjectForBeanInstance(AbstractAutowireCapableBeanFactory.java:1265) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1532) at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1489) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1270) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) at org.jeecg.JeecgSystemCloudApplication.main(JeecgSystemCloudApplication.java:66) 2025-09-03 15:09:15.995 [main] WARN o.s.c.a.AnnotationConfigApplicationContext:559 - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'flowableGlobalListenerConfig' defined in file [D:\work\javacode\yaxt-micro\jeecg-cloud-module\nbcio-boot-module-flowable\target\classes\com\nbcio\modules\flowable\config\FlowableGlobalListenerConfig.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'taskCreateListener' defined in file [D:\work\javacode\yaxt-micro\jeecg-cloud-module\nbcio-boot-module-flowable\target\classes\com\nbcio\modules\flowable\listener\TaskCreateListener.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'taskServiceBean' defined in class path resource [org/flowable/spring/boot/ProcessEngineServicesAutoConfiguration.class]: Unsatisfied dependency expressed through method 'taskServiceBean' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'processEngine': FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException 2025-09-03 15:09:15.997 [main] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext:559 - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jeecgTestFeignController': Unsatisfied dependency expressed through field 'jeecgTestClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.jeecg.modules.cloud.feign.feign.JeecgTestClient': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'flowableGlobalListenerConfig' defined in file [D:\work\javacode\yaxt-micro\jeecg-cloud-module\nbcio-boot-module-flowable\target\classes\com\nbcio\modules\flowable\config\FlowableGlobalListenerConfig.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'taskCreateListener' defined in file [D:\work\javacode\yaxt-micro\jeecg-cloud-module\nbcio-boot-module-flowable\target\classes\com\nbcio\modules\flowable\listener\TaskCreateListener.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'taskServiceBean' defined in class path resource [org/flowable/spring/boot/ProcessEngineServicesAutoConfiguration.class]: Unsatisfied dependency expressed through method 'taskServiceBean' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'processEngine': FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException 2025-09-03 15:09:15.998 [main] INFO o.s.a.r.listener.SimpleMessageListenerContainer:1260 - Shutdown ignored - container is not active already 2025-09-03 15:09:16.004 [main] INFO o.s.orm.jpa.LocalContainerEntityManagerFactoryBean:598 - Closing JPA EntityManagerFactory for persistence unit 'default' 2025-09-03 15:09:16.009 [main] INFO c.b.dynamic.datasource.DynamicRoutingDataSource:217 - dynamic-datasource start closing .... 2025-09-03 15:09:16.011 [main] INFO com.alibaba.druid.pool.DruidDataSource:2029 - {dataSource-1} closing ... 2025-09-03 15:09:16.013 [main] INFO com.alibaba.druid.pool.DruidDataSource:2101 - {dataSource-1} closed 为什么还是报错
最新发布
09-04
解决报错[root@localhost docker]# docker logs -f tdm-jar LOGBACK: No context given for c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@667346055 _____ _____ _____ /\ \ /\ \ /\ \ /::\ \ /::\ \ /::\____\ \:::\ \ /::::\ \ /::::| | \:::\ \ /::::::\ \ /:::::| | \:::\ \ /:::/\:::\ \ /::::::| | \:::\ \ /:::/ \:::\ \ /:::/|::| | /::::\ \ /:::/ \:::\ \ /:::/ |::| | /::::::\ \ /:::/ / \:::\ \ /:::/ |::|___|______ /:::/\:::\ \ /:::/ / \:::\ ___\ /:::/ |::::::::\ \ /:::/ \:::\____\/:::/____/ \:::| /:::/ |:::::::::\____\ /:::/ \::/ /\:::\ \ /:::|____\::/ / ~~~~~/:::/ / /:::/ / \/____/ \:::\ \ /:::/ / \/____/ /:::/ / /:::/ / \:::\ \ /:::/ / /:::/ / /:::/ / \:::\ /:::/ / /:::/ / \::/ / \:::\ /:::/ / /:::/ / \/____/ \:::\/:::/ / /:::/ / \::::::/ / /:::/ / \::::/ / /:::/ / \::/____/ \::/ / ~~ \/____/ 2025-07-25 07:37:16,287 INFO [main] - cn.serverx.sx.ServerXApplication:55 - Starting ServerXApplication on 974d7161bb6c with PID 1 (/app/sx-admin-1.0-SNAPSHOT.jar started by root in /app) 2025-07-25 07:37:16,300 INFO [main] - cn.serverx.sx.ServerXApplication:655 - The following profiles are active: p 2025-07-25 07:37:26,626 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationDelegate:249 - Multiple Spring Data modules found, entering strict repository configuration mode! 2025-07-25 07:37:26,632 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationDelegate:127 - Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2025-07-25 07:37:27,700 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data JPA - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.core.dao.elasticsearch.EsLogDao. If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: javax.persistence.Entity, javax.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository. 2025-07-25 07:37:28,073 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationDelegate:187 - Finished Spring Data repository scanning in 1405ms. Found 27 JPA repository interfaces. 2025-07-25 07:37:28,223 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationDelegate:249 - Multiple Spring Data modules found, entering strict repository configuration mode! 2025-07-25 07:37:28,227 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationDelegate:127 - Bootstrapping Spring Data Redis repositories in DEFAULT mode. 2025-07-25 07:37:28,307 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.base.dao.DictDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,322 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.base.dao.DictDataDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,323 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.activiti.dao.ActBusinessDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,324 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.activiti.dao.ActCategoryDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,327 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.activiti.dao.ActModelDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,328 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.activiti.dao.ActNodeDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,328 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.activiti.dao.ActProcessDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,329 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.activiti.dao.business.LeaveDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,330 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.social.dao.GithubDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,330 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.social.dao.QQDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,330 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.social.dao.WechatDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,358 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.social.dao.WeiboDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,360 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.core.dao.DepartmentDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,360 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.core.dao.DepartmentHeaderDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,361 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.core.dao.elasticsearch.EsLogDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,361 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.core.dao.LogDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,367 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.core.dao.MessageDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,367 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.core.dao.MessageSendDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,368 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.core.dao.PermissionDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,368 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.core.dao.RoleDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,369 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.core.dao.RoleDepartmentDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,378 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.core.dao.RolePermissionDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,378 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.core.dao.SettingDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,379 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.core.dao.UserDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,379 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.core.dao.UserRoleDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,380 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.file.dao.FileDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,392 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.quartz.dao.QuartzJobDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,397 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport:348 - Spring Data Redis - Could not safely identify store assignment for repository candidate interface cn.serverx.sx.open.dao.ClientDao. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository. 2025-07-25 07:37:28,397 INFO [main] - org.springframework.data.repository.config.RepositoryConfigurationDelegate:187 - Finished Spring Data repository scanning in 149ms. Found 0 Redis repository interfaces. 2025-07-25 07:37:29,164 WARN [main] - org.mybatis.spring.mapper.ClassPathMapperScanner:44 - Skipping MapperFactoryBean with name 'permissionMapper' and 'cn.serverx.sx.core.dao.mapper.PermissionMapper' mapperInterface. Bean already defined with the same name! 2025-07-25 07:37:29,164 WARN [main] - org.mybatis.spring.mapper.ClassPathMapperScanner:44 - Skipping MapperFactoryBean with name 'userRoleMapper' and 'cn.serverx.sx.core.dao.mapper.UserRoleMapper' mapperInterface. Bean already defined with the same name! 2025-07-25 07:37:29,172 WARN [main] - org.mybatis.spring.mapper.ClassPathMapperScanner:44 - Skipping MapperFactoryBean with name 'actMapper' and 'cn.serverx.sx.activiti.dao.mapper.ActMapper' mapperInterface. Bean already defined with the same name! 2025-07-25 07:37:29,173 WARN [main] - org.mybatis.spring.mapper.ClassPathMapperScanner:44 - Skipping MapperFactoryBean with name 'historyIdentityMapper' and 'cn.serverx.sx.activiti.dao.mapper.HistoryIdentityMapper' mapperInterface. Bean already defined with the same name! 2025-07-25 07:37:29,173 WARN [main] - org.mybatis.spring.mapper.ClassPathMapperScanner:44 - Skipping MapperFactoryBean with name 'runIdentityMapper' and 'cn.serverx.sx.activiti.dao.mapper.RunIdentityMapper' mapperInterface. Bean already defined with the same name! 2025-07-25 07:37:30,140 INFO [main] - com.ulisesbocchio.jasyptspringboot.configuration.EnableEncryptablePropertiesBeanFactoryPostProcessor:48 - Post-processing PropertySource instances 2025-07-25 07:37:30,481 INFO [main] - com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:44 - Converting PropertySource configurationProperties [org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource] to AOP Proxy 2025-07-25 07:37:30,482 INFO [main] - com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:44 - Converting PropertySource commandLineArgs [org.springframework.core.env.SimpleCommandLinePropertySource] to EncryptableEnumerablePropertySourceWrapper 2025-07-25 07:37:30,482 INFO [main] - com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:44 - Converting PropertySource servletConfigInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper 2025-07-25 07:37:30,483 INFO [main] - com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:44 - Converting PropertySource servletContextInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper 2025-07-25 07:37:30,483 INFO [main] - com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:44 - Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper 2025-07-25 07:37:30,483 INFO [main] - com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:44 - Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableSystemEnvironmentPropertySourceWrapper 2025-07-25 07:37:30,483 INFO [main] - com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:44 - Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper 2025-07-25 07:37:30,484 INFO [main] - com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:44 - Converting PropertySource applicationConfig: [file:./application-p.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper 2025-07-25 07:37:30,484 INFO [main] - com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:44 - Converting PropertySource applicationConfig: [classpath:/application.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper 2025-07-25 07:37:32,773 INFO [main] - org.springframework.integration.config.DefaultConfiguringBeanFactoryPostProcessor:213 - No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created. 2025-07-25 07:37:32,785 INFO [main] - org.springframework.integration.config.DefaultConfiguringBeanFactoryPostProcessor:300 - No bean named 'taskScheduler' has been explicitly defined. Therefore, a default ThreadPoolTaskScheduler will be created. 2025-07-25 07:37:32,807 INFO [main] - org.springframework.integration.config.DefaultConfiguringBeanFactoryPostProcessor:460 - No bean named 'integrationHeaderChannelRegistry' has been explicitly defined. Therefore, a default DefaultHeaderChannelRegistry will be created. 2025-07-25 07:37:33,452 INFO [main] - com.ulisesbocchio.jasyptspringboot.filter.DefaultLazyPropertyFilter:31 - Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter 2025-07-25 07:37:33,763 INFO [main] - org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2025-07-25 07:37:34,550 INFO [main] - org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'redisCacheConfig' of type [cn.serverx.sx.core.config.cache.RedisCacheConfig$$EnhancerBySpringCGLIB$$c82ebc37] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2025-07-25 07:37:34,849 INFO [main] - org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration' of type [org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2025-07-25 07:37:34,928 INFO [main] - org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'objectPostProcessor' of type [org.springframework.security.config.annotation.configuration.AutowireBeanFactoryObjectPostProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2025-07-25 07:37:34,944 INFO [main] - org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler@44e3760b' of type [org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2025-07-25 07:37:34,948 INFO [main] - org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration' of type [org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2025-07-25 07:37:34,993 INFO [main] - org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'methodSecurityMetadataSource' of type [org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2025-07-25 07:37:35,059 INFO [main] - org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'org.springframework.integration.config.IntegrationManagementConfiguration' of type [org.springframework.integration.config.IntegrationManagementConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2025-07-25 07:37:35,140 INFO [main] - org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'integrationChannelResolver' of type [org.springframework.integration.support.channel.BeanFactoryChannelResolver] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2025-07-25 07:37:35,179 INFO [main] - org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'integrationDisposableAutoCreatedBeans' of type [org.springframework.integration.config.annotation.Disposables] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2025-07-25 07:37:36,005 INFO [main] - com.ulisesbocchio.jasyptspringboot.resolver.DefaultLazyPropertyResolver:35 - Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver 2025-07-25 07:37:36,029 INFO [main] - com.ulisesbocchio.jasyptspringboot.detector.DefaultLazyPropertyDetector:35 - Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector 2025-07-25 07:37:37,980 INFO [main] - org.springframework.boot.web.embedded.tomcat.TomcatWebServer:92 - Tomcat initialized with port(s): 8862 (http) 2025-07-25 07:37:38,088 INFO [main] - org.apache.catalina.core.StandardService:173 - Starting service [Tomcat] 2025-07-25 07:37:38,089 INFO [main] - org.apache.catalina.core.StandardEngine:173 - Starting Servlet engine: [Apache Tomcat/9.0.29] 2025-07-25 07:37:38,484 INFO [main] - org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring embedded WebApplicationContext 2025-07-25 07:37:38,485 INFO [main] - org.springframework.web.context.ContextLoader:284 - Root WebApplicationContext: initialization completed in 21879 ms 2025-07-25 07:37:42,651 INFO [main] - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure:56 - Init DruidDataSource 2025-07-25 07:37:45,200 INFO [main] - com.alibaba.druid.pool.DruidDataSource:1010 - {dataSource-1} inited 2025-07-25 07:37:47,770 INFO [main] - org.hibernate.jpa.internal.util.LogHelper:31 - HHH000204: Processing PersistenceUnitInfo [name: default] 2025-07-25 07:37:48,017 INFO [main] - org.hibernate.Version:46 - HHH000412: Hibernate Core {5.4.9.Final} 2025-07-25 07:37:48,022 INFO [main] - org.hibernate.cfg.Environment:184 - HHH000205: Loaded properties from resource hibernate.properties: {hibernate.bytecode.use_reflection_optimizer=false, hibernate.dialect.storage_engine=innodb} 2025-07-25 07:37:48,995 INFO [main] - org.hibernate.annotations.common.Version:49 - HCANN000001: Hibernate Commons Annotations {5.1.0.Final} 2025-07-25 07:37:49,477 INFO [main] - org.hibernate.dialect.Dialect:172 - HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect 2025-07-25 07:37:56,804 INFO [main] - org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator:52 - HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] 2025-07-25 07:37:57,007 INFO [main] - org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean:416 - Initialized JPA EntityManagerFactory for persistence unit 'default' 2025-07-25 07:37:59,055 WARN [main] - cn.serverx.sx.core.config.security.permission.MyFilterSecurityInterceptor:159 - Could not validate configuration attributes as the SecurityMetadataSource did not return any attributes from getAllConfigAttributes() 2025-07-25 07:38:00,730 INFO [main] - org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar:75 - Registered '/serverx/actuator/jolokia' to jolokia-actuator-endpoint _ _ |_ _ _|_. ___ _ | _ | | |\/|_)(_| | |_\ |_)||_|_\ / | 3.3.1 2025-07-25 07:38:12,093 INFO [main] - org.quartz.impl.StdSchedulerFactory:1220 - Using default implementation for ThreadExecutor 2025-07-25 07:38:12,235 INFO [main] - org.quartz.core.SchedulerSignalerImpl:61 - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl 2025-07-25 07:38:12,235 INFO [main] - org.quartz.core.QuartzScheduler:229 - Quartz Scheduler v.2.3.2 created. 2025-07-25 07:38:12,275 INFO [main] - org.springframework.scheduling.quartz.LocalDataSourceJobStore:672 - Using db table-based data access locking (synchronization). 2025-07-25 07:38:12,281 INFO [main] - org.springframework.scheduling.quartz.LocalDataSourceJobStore:145 - JobStoreCMT initialized. 2025-07-25 07:38:12,283 INFO [main] - org.quartz.core.QuartzScheduler:294 - Scheduler meta-data: Quartz Scheduler (v2.3.2) 'quartzScheduler' with instanceId 'NON_CLUSTERED' Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. NOT STARTED. Currently in standby mode. Number of jobs executed: 0 Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is not clustered. 2025-07-25 07:38:12,283 INFO [main] - org.quartz.impl.StdSchedulerFactory:1374 - Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. 2025-07-25 07:38:12,284 INFO [main] - org.quartz.impl.StdSchedulerFactory:1378 - Quartz scheduler version: 2.3.2 2025-07-25 07:38:12,284 INFO [main] - org.quartz.core.QuartzScheduler:2293 - JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@3ea84e01 Hibernate: select quartzjob0_.id as id1_41_, quartzjob0_.create_by as create_b2_41_, quartzjob0_.create_time as create_t3_41_, quartzjob0_.del_flag as del_flag4_41_, quartzjob0_.update_by as update_b5_41_, quartzjob0_.update_time as update_t6_41_, quartzjob0_.cron_expression as cron_exp7_41_, quartzjob0_.description as descript8_41_, quartzjob0_.job_class_name as job_clas9_41_, quartzjob0_.parameter as paramet10_41_, quartzjob0_.status as status11_41_ from t_quartz_job quartzjob0_ where quartzjob0_.job_class_name=? 2025-07-25 07:38:27,622 ERROR [main] - cn.serverx.sx.job.init.JobInitConfig:122 - org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: Table 'tdm.qrtz_locks' doesn't exist [See nested exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'tdm.qrtz_locks' doesn't exist] 2025-07-25 07:38:28,007 WARN [main] - org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext:558 - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobInitConfig': Invocation of init method failed; nested exception is ServerXException(msg=创建定时任务失败) 2025-07-25 07:38:28,104 INFO [main] - org.springframework.scheduling.quartz.SchedulerFactoryBean:845 - Shutting down Quartz Scheduler 2025-07-25 07:38:28,106 INFO [main] - org.quartz.core.QuartzScheduler:666 - Scheduler quartzScheduler_$_NON_CLUSTERED shutting down. 2025-07-25 07:38:28,106 INFO [main] - org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused. 2025-07-25 07:38:28,118 INFO [main] - org.quartz.core.QuartzScheduler:740 - Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete. 2025-07-25 07:38:28,155 INFO [main] - org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean:598 - Closing JPA EntityManagerFactory for persistence unit 'default' 2025-07-25 07:38:28,200 INFO [main] - com.alibaba.druid.pool.DruidDataSource:2003 - {dataSource-1} closing ... 2025-07-25 07:38:28,549 INFO [main] - com.alibaba.druid.pool.DruidDataSource:2075 - {dataSource-1} closed 2025-07-25 07:38:28,886 INFO [main] - org.apache.catalina.core.StandardService:173 - Stopping service [Tomcat] 2025-07-25 07:38:29,338 INFO [main] - org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener:136 - Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2025-07-25 07:38:29,385 ERROR [main] - org.springframework.boot.SpringApplication:826 - Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobInitConfig': Invocation of init method failed; nested exception is ServerXException(msg=创建定时任务失败) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:416) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1788) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:879) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) at cn.serverx.sx.ServerXApplication.main(ServerXApplication.java:87) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88) Caused by: cn.serverx.sx.core.common.exception.ServerXException: 创建定时任务失败 at cn.serverx.sx.job.init.JobInitConfig.add(JobInitConfig.java:123) at cn.serverx.sx.job.init.JobInitConfig.init(JobInitConfig.java:94) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ... 26 common frames omitted
07-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值