问题就是:
登录默认的admin账号的时候(账号密码都正确),刚运行Tomcat新建立user表的时候 ,
页面登录成功,添加两个用户。然后关闭Tomcat 和myEclipse。
重新启动Tomcat 和myEclipse,页面登录的时候显示 ‘’用户名或密码错误‘’(账号密码都正确)。
但是新添加的两个用户却可以登录。。。
然后我把user表删除了 ,重新运行Tomcat建表 admin又可以登录了。
重复操作 。。。第二次admin又出现了问题。
怀疑是不是用户过期或权限的问题。。
日志:
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: Server version: Apache Tomcat/7.0.73
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: Server built: Nov 7 2016 21:27:23 UTC
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: Server number: 7.0.73.0
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: OS Name: Windows Vista
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: OS Version: 6.1
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: Architecture: amd64
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: Java Home: D:\myEclipse\Common\binary\com.sun.java.jdk.win32.x86_64_1.6.0.013\jre
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: JVM Version: 1.6.0_13-b03
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: JVM Vendor: Sun Microsystems Inc.
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: CATALINA_BASE: E:/nutztomcat/tomcat/apache-tomcat-7.0.73
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: CATALINA_HOME: E:/nutztomcat/tomcat/apache-tomcat-7.0.73
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcatalina.home=E:/nutztomcat/tomcat/apache-tomcat-7.0.73
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcatalina.base=E:/nutztomcat/tomcat/apache-tomcat-7.0.73
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Djava.endorsed.dirs=E:/nutztomcat/tomcat/apache-tomcat-7.0.73/common/endorsed
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Djava.io.tmpdir=E:/nutztomcat/tomcat/apache-tomcat-7.0.73/temp
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Djava.library.path=D:/myEclipse/Common/binary/com.sun.java.jdk.win32.x86_64_1.6.0.013/bin;E:/nutztomcat/tomcat/apache-tomcat-7.0.73/bin
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dsun.io.useCanonCaches=false
2018-4-11 18:55:20 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dfile.encoding=UTF-8
2018-4-11 18:55:20 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
信息: Loaded APR based Apache Tomcat Native library 1.2.10 using APR version 1.5.2.
2018-4-11 18:55:20 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
信息: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
2018-4-11 18:55:21 org.apache.catalina.core.AprLifecycleListener initializeSSL
信息: OpenSSL successfully initialized (OpenSSL 1.0.2j 26 Sep 2016)
2018-4-11 18:55:21 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["http-apr-8080"]
2018-4-11 18:55:21 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["ajp-apr-8009"]
2018-4-11 18:55:21 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 884 ms
2018-4-11 18:55:21 org.apache.catalina.core.StandardService startInternal
信息: Starting service Catalina
2018-4-11 18:55:21 org.apache.catalina.core.StandardEngine startInternal
信息: Starting Servlet Engine: Apache Tomcat/7.0.73
2018-4-11 18:55:21 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\docs
2018-4-11 18:55:21 org.apache.tomcat.websocket.server.WsSci onStartup
信息: JSR 356 WebSocket (Java WebSocket 1.1) support is not available when running on Java 6. To suppress this message, run Tomcat on Java 7, remove the WebSocket JARs from $CATALINA_HOME/lib or add the WebSocket JARs to the tomcat.util.scan.DefaultJarScanner.jarsToSkip property in $CATALINA_BASE/conf/catalina.properties. Note that the deprecated Tomcat 7 WebSocket API will be available.
2018-4-11 18:55:21 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\docs has finished in 389 ms
2018-4-11 18:55:21 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\examples
2018-4-11 18:55:22 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: contextInitialized()
2018-4-11 18:55:22 org.apache.catalina.core.ApplicationContext log
信息: SessionListener: contextInitialized()
2018-4-11 18:55:22 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@5edf2d38')
2018-4-11 18:55:22 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\examples has finished in 392 ms
2018-4-11 18:55:22 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\host-manager
2018-4-11 18:55:22 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\host-manager has finished in 60 ms
2018-4-11 18:55:22 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\manager
2018-4-11 18:55:22 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\manager has finished in 56 ms
2018-4-11 18:55:22 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\nutzbook
2018-4-11 18:55:23 org.apache.catalina.startup.TaglibUriRule body
信息: TLD skipped. URI: http://java.sun.com/jstl/core is already defined
2018-4-11 18:55:23 org.apache.catalina.startup.TaglibUriRule body
信息: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined
2018-4-11 18:55:23 org.apache.catalina.startup.TaglibUriRule body
信息: TLD skipped. URI: http://java.sun.com/jstl/sql is already defined
2018-4-11 18:55:23 org.apache.catalina.startup.TaglibUriRule body
信息: TLD skipped. URI: http://java.sun.com/jstl/xml is already defined
2018-4-11 18:55:23 org.apache.catalina.startup.TldConfig execute
信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
2018-4-11 18:55:23 org.apache.catalina.core.ApplicationContext log
信息: Initializing Shiro environment
2018-04-11 18:55:23,706 org.apache.shiro.web.env.EnvironmentLoader.initEnvironment(EnvironmentLoader.java:128) INFO - Starting Shiro environment initialization.
2018-04-11 18:55:23,724 org.apache.shiro.web.env.IniWebEnvironment.init(IniWebEnvironment.java:76) DEBUG - Checking any specified config locations.
2018-04-11 18:55:23,724 org.apache.shiro.web.env.IniWebEnvironment.init(IniWebEnvironment.java:81) DEBUG - No INI instance or config locations specified. Trying default config locations.
2018-04-11 18:55:23,731 org.apache.shiro.io.ResourceUtils.loadFromClassPath(ResourceUtils.java:159) DEBUG - Opening resource from class path [shiro.ini]
2018-04-11 18:55:23,736 org.apache.shiro.config.Ini.load(Ini.java:351) DEBUG - Parsing [main]
2018-04-11 18:55:23,738 org.apache.shiro.config.Ini.load(Ini.java:351) DEBUG - Parsing [urls]
2018-04-11 18:55:23,739 org.apache.shiro.web.env.IniWebEnvironment.getDefaultIni(IniWebEnvironment.java:136) DEBUG - Discovered non-empty INI configuration at location 'classpath:shiro.ini'. Using for configuration.
2018-04-11 18:55:23,744 org.apache.shiro.config.IniFactorySupport.createInstance(IniFactorySupport.java:122) DEBUG - Creating instance from Ini [sections=main,urls]
2018-04-11 18:55:24,017 org.apache.shiro.realm.AuthorizingRealm.getAuthorizationCacheLazy(AuthorizingRealm.java:234) DEBUG - No authorizationCache instance set. Checking for a cacheManager...
2018-04-11 18:55:24,017 org.apache.shiro.realm.AuthorizingRealm.getAuthorizationCacheLazy(AuthorizingRealm.java:248) DEBUG - No cache or cacheManager properties have been set. Authorization cache cannot be obtained.
2018-04-11 18:55:24,018 org.apache.shiro.config.ReflectionBuilder.createNewInstance(ReflectionBuilder.java:296) INFO - An instance with name 'authc' already exists. Redefining this object as a new instance of type org.nutz.integration.shiro.SimpleAuthenticationFilter
2018-04-11 18:55:24,064 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: false
2018-04-11 18:55:24,064 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Boolean' value 'false' to type 'Boolean'
2018-04-11 18:55:24,064 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Boolean
2018-04-11 18:55:24,067 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: 0
2018-04-11 18:55:24,067 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Integer' value '0' to type 'Byte'
2018-04-11 18:55:24,068 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:171) DEBUG - Converted to Byte value '0'
2018-04-11 18:55:24,070 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value:
2018-04-11 18:55:24,070 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Character' value ' ' to type 'Character'
2018-04-11 18:55:24,070 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Character
2018-04-11 18:55:24,071 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: 0
2018-04-11 18:55:24,071 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Integer' value '0' to type 'Double'
2018-04-11 18:55:24,072 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:171) DEBUG - Converted to Double value '0.0'
2018-04-11 18:55:24,073 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: 0
2018-04-11 18:55:24,073 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Integer' value '0' to type 'Float'
2018-04-11 18:55:24,073 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:171) DEBUG - Converted to Float value '0.0'
2018-04-11 18:55:24,074 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: 0
2018-04-11 18:55:24,074 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Integer' value '0' to type 'Integer'
2018-04-11 18:55:24,075 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Integer
2018-04-11 18:55:24,076 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: 0
2018-04-11 18:55:24,076 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Integer' value '0' to type 'Long'
2018-04-11 18:55:24,076 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:171) DEBUG - Converted to Long value '0'
2018-04-11 18:55:24,077 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: 0
2018-04-11 18:55:24,077 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Integer' value '0' to type 'Short'
2018-04-11 18:55:24,077 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:171) DEBUG - Converted to Short value '0'
2018-04-11 18:55:24,079 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: 0.0
2018-04-11 18:55:24,080 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'BigDecimal' value '0.0' to type 'BigDecimal'
2018-04-11 18:55:24,080 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a BigDecimal
2018-04-11 18:55:24,081 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: 0
2018-04-11 18:55:24,081 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'BigInteger' value '0' to type 'BigInteger'
2018-04-11 18:55:24,082 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a BigInteger
2018-04-11 18:55:24,082 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: false
2018-04-11 18:55:24,082 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Boolean' value 'false' to type 'Boolean'
2018-04-11 18:55:24,082 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Boolean
2018-04-11 18:55:24,082 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: 0
2018-04-11 18:55:24,083 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Integer' value '0' to type 'Byte'
2018-04-11 18:55:24,083 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:171) DEBUG - Converted to Byte value '0'
2018-04-11 18:55:24,083 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value:
2018-04-11 18:55:24,083 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Character' value ' ' to type 'Character'
2018-04-11 18:55:24,083 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Character
2018-04-11 18:55:24,084 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: 0
2018-04-11 18:55:24,084 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Integer' value '0' to type 'Double'
2018-04-11 18:55:24,084 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:171) DEBUG - Converted to Double value '0.0'
2018-04-11 18:55:24,084 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: 0
2018-04-11 18:55:24,084 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Integer' value '0' to type 'Float'
2018-04-11 18:55:24,085 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:171) DEBUG - Converted to Float value '0.0'
2018-04-11 18:55:24,085 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: 0
2018-04-11 18:55:24,085 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Integer' value '0' to type 'Integer'
2018-04-11 18:55:24,085 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Integer
2018-04-11 18:55:24,085 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: 0
2018-04-11 18:55:24,085 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Integer' value '0' to type 'Long'
2018-04-11 18:55:24,085 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:171) DEBUG - Converted to Long value '0'
2018-04-11 18:55:24,085 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: 0
2018-04-11 18:55:24,086 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Integer' value '0' to type 'Short'
2018-04-11 18:55:24,086 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:171) DEBUG - Converted to Short value '0'
2018-04-11 18:55:24,087 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value:
2018-04-11 18:55:24,087 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'String' value '' to type 'String'
2018-04-11 18:55:24,099 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Z@534a55e5
2018-04-11 18:55:24,099 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'boolean[]' value '[Z@534a55e5' to type 'boolean[]'
2018-04-11 18:55:24,099 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a boolean[]
2018-04-11 18:55:24,100 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [B@354d581b
2018-04-11 18:55:24,100 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'byte[]' value '[B@354d581b' to type 'byte[]'
2018-04-11 18:55:24,100 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a byte[]
2018-04-11 18:55:24,100 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [C@68d36ff3
2018-04-11 18:55:24,100 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'char[]' value '[C@68d36ff3' to type 'char[]'
2018-04-11 18:55:24,100 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a char[]
2018-04-11 18:55:24,100 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [D@115af049
2018-04-11 18:55:24,100 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'double[]' value '[D@115af049' to type 'double[]'
2018-04-11 18:55:24,101 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a double[]
2018-04-11 18:55:24,101 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [F@69555185
2018-04-11 18:55:24,101 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'float[]' value '[F@69555185' to type 'float[]'
2018-04-11 18:55:24,101 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a float[]
2018-04-11 18:55:24,101 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [I@605b28c9
2018-04-11 18:55:24,101 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'int[]' value '[I@605b28c9' to type 'int[]'
2018-04-11 18:55:24,102 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a int[]
2018-04-11 18:55:24,102 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [J@d2d58b
2018-04-11 18:55:24,102 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'long[]' value '[J@d2d58b' to type 'long[]'
2018-04-11 18:55:24,102 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a long[]
2018-04-11 18:55:24,102 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [S@11c19919
2018-04-11 18:55:24,102 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'short[]' value '[S@11c19919' to type 'short[]'
2018-04-11 18:55:24,103 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a short[]
2018-04-11 18:55:24,103 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.math.BigDecimal;@3d2a416a
2018-04-11 18:55:24,103 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'BigDecimal[]' value '[Ljava.math.BigDecimal;@3d2a416a' to type 'BigDecimal[]'
2018-04-11 18:55:24,103 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a BigDecimal[]
2018-04-11 18:55:24,103 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.math.BigInteger;@7e413fc6
2018-04-11 18:55:24,103 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'BigInteger[]' value '[Ljava.math.BigInteger;@7e413fc6' to type 'BigInteger[]'
2018-04-11 18:55:24,104 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a BigInteger[]
2018-04-11 18:55:24,104 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.lang.Boolean;@63ff5c98
2018-04-11 18:55:24,104 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Boolean[]' value '[Ljava.lang.Boolean;@63ff5c98' to type 'Boolean[]'
2018-04-11 18:55:24,104 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Boolean[]
2018-04-11 18:55:24,104 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.lang.Byte;@7297e3a5
2018-04-11 18:55:24,105 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Byte[]' value '[Ljava.lang.Byte;@7297e3a5' to type 'Byte[]'
2018-04-11 18:55:24,105 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Byte[]
2018-04-11 18:55:24,105 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.lang.Character;@7591777e
2018-04-11 18:55:24,105 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Character[]' value '[Ljava.lang.Character;@7591777e' to type 'Character[]'
2018-04-11 18:55:24,105 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Character[]
2018-04-11 18:55:24,105 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.lang.Double;@75cefde4
2018-04-11 18:55:24,106 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Double[]' value '[Ljava.lang.Double;@75cefde4' to type 'Double[]'
2018-04-11 18:55:24,106 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Double[]
2018-04-11 18:55:24,106 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.lang.Float;@5979b7b0
2018-04-11 18:55:24,106 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Float[]' value '[Ljava.lang.Float;@5979b7b0' to type 'Float[]'
2018-04-11 18:55:24,106 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Float[]
2018-04-11 18:55:24,106 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.lang.Integer;@6818c458
2018-04-11 18:55:24,106 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Integer[]' value '[Ljava.lang.Integer;@6818c458' to type 'Integer[]'
2018-04-11 18:55:24,107 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Integer[]
2018-04-11 18:55:24,107 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.lang.Long;@4b0e18ba
2018-04-11 18:55:24,107 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Long[]' value '[Ljava.lang.Long;@4b0e18ba' to type 'Long[]'
2018-04-11 18:55:24,107 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Long[]
2018-04-11 18:55:24,107 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.lang.Short;@2f3acc52
2018-04-11 18:55:24,107 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Short[]' value '[Ljava.lang.Short;@2f3acc52' to type 'Short[]'
2018-04-11 18:55:24,108 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Short[]
2018-04-11 18:55:24,108 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.lang.String;@3b6752c9
2018-04-11 18:55:24,108 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'String[]' value '[Ljava.lang.String;@3b6752c9' to type 'String[]'
2018-04-11 18:55:24,108 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a String[]
2018-04-11 18:55:24,108 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.lang.Class;@7c6c2896
2018-04-11 18:55:24,108 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Class[]' value '[Ljava.lang.Class;@7c6c2896' to type 'Class[]'
2018-04-11 18:55:24,108 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Class[]
2018-04-11 18:55:24,109 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.util.Date;@c5f468
2018-04-11 18:55:24,109 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Date[]' value '[Ljava.util.Date;@c5f468' to type 'Date[]'
2018-04-11 18:55:24,109 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Date[]
2018-04-11 18:55:24,109 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.util.Calendar;@62c4afc4
2018-04-11 18:55:24,109 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'Calendar[]' value '[Ljava.util.Calendar;@62c4afc4' to type 'Calendar[]'
2018-04-11 18:55:24,109 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a Calendar[]
2018-04-11 18:55:24,110 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.io.File;@45d1c3cd
2018-04-11 18:55:24,110 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'java.io.File[]' value '[Ljava.io.File;@45d1c3cd' to type 'java.io.File[]'
2018-04-11 18:55:24,110 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a java.io.File[]
2018-04-11 18:55:24,110 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.sql.Date;@4762d950
2018-04-11 18:55:24,110 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'java.sql.Date[]' value '[Ljava.sql.Date;@4762d950' to type 'java.sql.Date[]'
2018-04-11 18:55:24,110 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a java.sql.Date[]
2018-04-11 18:55:24,111 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.sql.Time;@4b8e899c
2018-04-11 18:55:24,111 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'java.sql.Time[]' value '[Ljava.sql.Time;@4b8e899c' to type 'java.sql.Time[]'
2018-04-11 18:55:24,111 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a java.sql.Time[]
2018-04-11 18:55:24,111 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.sql.Timestamp;@3eb52a28
2018-04-11 18:55:24,111 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'java.sql.Timestamp[]' value '[Ljava.sql.Timestamp;@3eb52a28' to type 'java.sql.Timestamp[]'
2018-04-11 18:55:24,111 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a java.sql.Timestamp[]
2018-04-11 18:55:24,112 org.apache.commons.beanutils.converters.AbstractConverter.setDefaultValue(AbstractConverter.java:353) DEBUG - Setting default value: [Ljava.net.URL;@59c958af
2018-04-11 18:55:24,112 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'java.net.URL[]' value '[Ljava.net.URL;@59c958af' to type 'java.net.URL[]'
2018-04-11 18:55:24,112 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:162) DEBUG - No conversion required, value is already a java.net.URL[]
2018-04-11 18:55:24,130 org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java:481) DEBUG - Convert string '/user/login' to class 'java.lang.String'
2018-04-11 18:55:24,130 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'String' value '/user/login' to type 'String'
2018-04-11 18:55:24,135 org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java:481) DEBUG - Convert string '/user/login' to class 'java.lang.String'
2018-04-11 18:55:24,135 org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:140) DEBUG - Converting 'String' value '/user/login' to type 'String'
2018-04-11 18:55:24,135 org.apache.shiro.realm.AuthorizingRealm.getAuthorizationCacheLazy(AuthorizingRealm.java:234) DEBUG - No authorizationCache instance set. Checking for a cacheManager...
2018-04-11 18:55:24,135 org.apache.shiro.realm.AuthorizingRealm.getAuthorizationCacheLazy(AuthorizingRealm.java:248) DEBUG - No cache or cacheManager properties have been set. Authorization cache cannot be obtained.
2018-04-11 18:55:24,140 org.apache.shiro.config.IniFactorySupport.createInstance(IniFactorySupport.java:122) DEBUG - Creating instance from Ini [sections=main,urls]
2018-04-11 18:55:24,146 org.apache.shiro.web.filter.mgt.DefaultFilterChainManager.createChain(DefaultFilterChainManager.java:127) DEBUG - Creating chain [/rs/*] from String definition [anon]
2018-04-11 18:55:24,146 org.apache.shiro.web.filter.mgt.DefaultFilterChainManager.applyChainConfig(DefaultFilterChainManager.java:278) DEBUG - Attempting to apply path [/rs/*] to filter [anon] with config [null]
2018-04-11 18:55:24,148 org.apache.shiro.web.filter.mgt.DefaultFilterChainManager.createChain(DefaultFilterChainManager.java:127) DEBUG - Creating chain [/user/logout] from String definition [anon]
2018-04-11 18:55:24,148 org.apache.shiro.web.filter.mgt.DefaultFilterChainManager.applyChainConfig(DefaultFilterChainManager.java:278) DEBUG - Attempting to apply path [/user/logout] to filter [anon] with config [null]
2018-04-11 18:55:24,148 org.apache.shiro.web.filter.mgt.DefaultFilterChainManager.createChain(DefaultFilterChainManager.java:127) DEBUG - Creating chain [/user/error] from String definition [anon]
2018-04-11 18:55:24,149 org.apache.shiro.web.filter.mgt.DefaultFilterChainManager.applyChainConfig(DefaultFilterChainManager.java:278) DEBUG - Attempting to apply path [/user/error] to filter [anon] with config [null]
2018-04-11 18:55:24,149 org.apache.shiro.web.filter.mgt.DefaultFilterChainManager.createChain(DefaultFilterChainManager.java:127) DEBUG - Creating chain [/user/login] from String definition [anon]
2018-04-11 18:55:24,149 org.apache.shiro.web.filter.mgt.DefaultFilterChainManager.applyChainConfig(DefaultFilterChainManager.java:278) DEBUG - Attempting to apply path [/user/login] to filter [anon] with config [null]
2018-04-11 18:55:24,149 org.apache.shiro.web.filter.mgt.DefaultFilterChainManager.createChain(DefaultFilterChainManager.java:127) DEBUG - Creating chain [/user/profile/active/mail] from String definition [anon]
2018-04-11 18:55:24,149 org.apache.shiro.web.filter.mgt.DefaultFilterChainManager.applyChainConfig(DefaultFilterChainManager.java:278) DEBUG - Attempting to apply path [/user/profile/active/mail] to filter [anon] with config [null]
2018-04-11 18:55:24,150 org.apache.shiro.web.env.EnvironmentLoader.initEnvironment(EnvironmentLoader.java:136) DEBUG - Published WebEnvironment as ServletContext attribute with name [org.apache.shiro.web.env.EnvironmentLoader.ENVIRONMENT_ATTRIBUTE_KEY]
2018-04-11 18:55:24,150 org.apache.shiro.web.env.EnvironmentLoader.initEnvironment(EnvironmentLoader.java:141) INFO - Shiro environment initialized in 441 ms.
2018-04-11 18:55:24,188 org.nutz.mvc.NutFilter._init(NutFilter.java:85) INFO - NutFilter[nutz] starting ...
2018-04-11 18:55:24,225 org.nutz.resource.Scans.printLocations(Scans.java:521) DEBUG - Locations count=5 time use 19ms
2018-04-11 18:55:24,405 org.nutz.resource.Scans.printLocations(Scans.java:521) DEBUG - Locations count=28 time use 178ms
2018-04-11 18:55:24,520 org.nutz.castor.Castors.reload(Castors.java:115) DEBUG - Using 95 castor for Castors
2018-04-11 18:55:24,553 org.nutz.mvc.config.AbstractNutConfig.createLoading(AbstractNutConfig.java:59) DEBUG - Loading by class org.nutz.mvc.impl.NutLoading
2018-04-11 18:55:24,556 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:55) INFO - Nutz Version : 1.r.62
2018-04-11 18:55:24,556 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:56) INFO - Nutz.Mvc[nutz] is initializing ...
2018-04-11 18:55:24,556 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:60) DEBUG - Web Container Information:
2018-04-11 18:55:24,557 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:61) DEBUG - - Default Charset : UTF-8
2018-04-11 18:55:24,558 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:62) DEBUG - - Current . path : E:\nutztomcat\tomcat\apache-tomcat-7.0.73\bin\.
2018-04-11 18:55:24,558 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:63) DEBUG - - Java Version : 1.6.0_13
2018-04-11 18:55:24,558 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:64) DEBUG - - File separator : \
2018-04-11 18:55:24,558 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:65) DEBUG - - Timezone : Asia/Shanghai
2018-04-11 18:55:24,558 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:66) DEBUG - - OS : Windows Vista amd64
2018-04-11 18:55:24,558 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:67) DEBUG - - ServerInfo : Apache Tomcat/7.0.73
2018-04-11 18:55:24,558 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:68) DEBUG - - Servlet API : 3.0
2018-04-11 18:55:24,559 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:73) DEBUG - - ContextPath : /nutzbook
2018-04-11 18:55:24,559 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:74) DEBUG - - context.tempdir : E:\nutztomcat\tomcat\apache-tomcat-7.0.73\work\Catalina\localhost\nutzbook
2018-04-11 18:55:24,559 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:75) DEBUG - - MainModule : net.wendal.nutzbook.MainModule
2018-04-11 18:55:24,559 org.nutz.mvc.impl.NutLoading.createContext(NutLoading.java:235) DEBUG - >> app.root = E:/nutztomcat/tomcat/apache-tomcat-7.0.73/webapps/nutzbook
2018-04-11 18:55:24,562 org.nutz.mvc.impl.NutLoading.createIoc(NutLoading.java:376) DEBUG - @IocBy(type=org.nutz.mvc.ioc.provider.ComboIocProvider, args=["*js", "ioc/", "*anno", "net.wendal.nutzbook", "*tx", "*quartz"],init=[])
2018-04-11 18:55:24,635 org.nutz.resource.Scans.scan(Scans.java:274) DEBUG - Found 2 resource by src( ioc/ ) , regex( ^(.+[.])(js|json)$ )
2018-04-11 18:55:24,636 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:49) DEBUG - loading [dao.js]
2018-04-11 18:55:24,644 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:49) DEBUG - loading [mail.js]
2018-04-11 18:55:24,646 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:57) DEBUG - Loaded 5 bean define from path=[ioc/] --> [htmlEmail, dataSource, dao, conf, emailAuthenticator]
2018-04-11 18:55:24,672 org.nutz.resource.Scans.scan(Scans.java:274) DEBUG - Found 18 resource by src( net/wendal/nutzbook/ ) , regex( ^.+[.]class$ )
2018-04-11 18:55:24,719 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class net.wendal.nutzbook.module.CaptchaModule
2018-04-11 18:55:24,724 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class net.wendal.nutzbook.module.UserModule
2018-04-11 18:55:24,742 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class net.wendal.nutzbook.module.UserProfileModule
2018-04-11 18:55:24,755 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class net.wendal.nutzbook.quartz.job.CleanNonActiveUserJob
2018-04-11 18:55:24,758 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class net.wendal.nutzbook.service.EmailServiceImpl
2018-04-11 18:55:24,760 org.nutz.ioc.loader.annotation.AnnotationIocLoader.addClass(AnnotationIocLoader.java:76) DEBUG - Found @IocBean : class net.wendal.nutzbook.service.UserService
2018-04-11 18:55:24,764 org.nutz.ioc.loader.annotation.AnnotationIocLoader.<init>(AnnotationIocLoader.java:52) INFO - Found 6 classes in 1 base-packages!
beans = ["captchaModule", "cleanNonActiveUserJob", "userProfileModule", "userService", "emailService", "userModule"]
2018-04-11 18:55:24,771 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:40) DEBUG - Loaded 5 bean define from reader --
[txREPEATABLE_READ, txREAD_COMMITTED, txNONE, txSERIALIZABLE, txREAD_UNCOMMITTED]
2018-04-11 18:55:24,773 org.nutz.ioc.loader.combo.ComboIocLoader.createIocLoader(ComboIocLoader.java:110) DEBUG - found quartz -- org.nutz.integration.quartz.QuartzIocLoader
2018-04-11 18:55:24,777 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:57) DEBUG - Loaded 0 bean define from path=[] --> []
2018-04-11 18:55:24,782 org.nutz.ioc.impl.NutIoc.<init>(NutIoc.java:98) INFO - NutIoc init begin ...
2018-04-11 18:55:24,785 org.nutz.ioc.impl.NutIoc.<init>(NutIoc.java:115) INFO - ... NutIoc init complete
2018-04-11 18:55:24,791 org.nutz.mvc.impl.NutLoading.evalUrlMapping(NutLoading.java:159) INFO - Build URL mapping by org.nutz.mvc.impl.UrlMappingImpl ...
2018-04-11 18:55:24,795 org.nutz.mvc.impl.NutLoading.createViewMakers(NutLoading.java:366) DEBUG - @Views(DefaultViewMaker.class)
2018-04-11 18:55:24,806 org.nutz.resource.Scans.scan(Scans.java:274) DEBUG - Found 1 resource by src( mvc/nutzbook-mvc-chain.js ) , regex( ^(.+[.])(js|json)$ )
2018-04-11 18:55:24,813 org.nutz.mvc.impl.chainconfig.JsonActionChainMakerConfiguretion.<init>(JsonActionChainMakerConfiguretion.java:37) DEBUG - ActionChain Config:
{
"default": {
"ps": ["net.wendal.nutzbook.mvc.LogTimeProcessor", "org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor", "org.nutz.mvc.impl.processor.EncodingProcessor", "org.nutz.mvc.impl.processor.ModuleProcessor", "org.nutz.integration.shiro.NutShiroProcessor", "org.nutz.mvc.impl.processor.ActionFiltersProcessor", "org.nutz.mvc.impl.processor.AdaptorProcessor", "org.nutz.mvc.impl.processor.MethodInvokeProcessor", "org.nutz.mvc.impl.processor.ViewProcessor"],
"error": "org.nutz.mvc.impl.processor.FailProcessor"
}
}
2018-04-11 18:55:24,814 org.nutz.mvc.impl.NutLoading.createChainMaker(NutLoading.java:263) DEBUG - @ChainBy(org.nutz.mvc.impl.NutActionChainMaker)
2018-04-11 18:55:24,818 org.nutz.mvc.impl.Loadings.scanModules(Loadings.java:154) DEBUG - module class location 'file:/E:/nutztomcat/tomcat/apache-tomcat-7.0.73/webapps/nutzbook/WEB-INF/classes/'
2018-04-11 18:55:24,818 org.nutz.mvc.impl.Loadings.scanModuleInPackage(Loadings.java:184) DEBUG - > scan 'net.wendal.nutzbook'
2018-04-11 18:55:24,837 org.nutz.resource.Scans.scan(Scans.java:274) DEBUG - Found 18 resource by src( net/wendal/nutzbook/ ) , regex( ^.+[.]class$ )
2018-04-11 18:55:24,839 org.nutz.mvc.impl.Loadings.checkModule(Loadings.java:199) DEBUG - >> add 'net.wendal.nutzbook.module.CaptchaModule'
2018-04-11 18:55:24,839 org.nutz.mvc.impl.Loadings.checkModule(Loadings.java:199) DEBUG - >> add 'net.wendal.nutzbook.module.UserModule'
2018-04-11 18:55:24,840 org.nutz.mvc.impl.Loadings.checkModule(Loadings.java:199) DEBUG - >> add 'net.wendal.nutzbook.module.UserProfileModule'
2018-04-11 18:55:24,927 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/captcha/next' >> (CaptchaModule.java:23).next : BufferedImage | @Ok(raw:png) @Fail(jsp:jsp.500) | by 0 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:24,941 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/profile/get' >> (UserProfileModule.java:58).get : UserProfile | @Ok(json:full) @Fail(jsp:jsp.500) | by 1 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:24,942 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/profile/' >> (UserProfileModule.java:148).index : UserProfile | @Ok(jsp:jsp.user.profile) @Fail(jsp:jsp.500) | by 1 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:24,948 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/profile/update' >> (UserProfileModule.java:73).update : void | @Ok(void ) @Fail(jsp:jsp.500) | by 1 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:24,975 org.nutz.filepool.NutFilePool.<init>(NutFilePool.java:23) INFO - Init file-pool by: E:/nutztomcat/tomcat/apache-tomcat-7.0.73/webapps/nutzbook/WEB-INF/tmp/user_avatar [20000]
2018-04-11 18:55:24,978 org.nutz.filepool.NutFilePool.<init>(NutFilePool.java:37) DEBUG - file-pool.home: 'E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\nutzbook\WEB-INF\tmp\user_avatar'
2018-04-11 18:55:24,979 org.nutz.filepool.NutFilePool.<init>(NutFilePool.java:66) INFO - file-pool.cursor: 0
2018-04-11 18:55:24,986 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/profile/avatar' >> (UserProfileModule.java:106).uploadAvatar : void | @Ok(>>:/user/profile) @Fail(jsp:jsp.500) | by 1 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:24,988 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/profile/avatar' >> (UserProfileModule.java:136).readAvatar : Object | @Ok(raw:jpg) @Fail(jsp:jsp.500) | by 1 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:24,989 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/profile/active/mail' >> (UserProfileModule.java:157).activeMail : Object | @Ok(json:full) @Fail(jsp:jsp.500) | by 1 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:24,991 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/profile/active/mail' >> (UserProfileModule.java:184).activeMailCallback : String | @Ok(raw ) @Fail(jsp:jsp.500) | by 0 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:25,062 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/add' >> (UserModule.java:81).add : Object | @Ok(json:{locked:'password|salt',ignoreNull:true}) @Fail(http:500) | by 0 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:25,063 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/count' >> (UserModule.java:47).count : int | @Ok(json:{locked:'password|salt',ignoreNull:true}) @Fail(http:500) | by 0 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:25,065 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/delete' >> (UserModule.java:104).delete : Object | @Ok(json:{locked:'password|salt',ignoreNull:true}) @Fail(http:500) | by 0 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:25,072 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/query' >> (UserModule.java:115).query : Object | @Ok(json:{locked:'password|salt',ignoreNull:true}) @Fail(http:500) | by 0 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:25,073 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/' >> (UserModule.java:128).index : void | @Ok(jsp:jsp.user.lonin) @Fail(http:500) | by 0 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:25,074 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/update' >> (UserModule.java:93).update : Object | @Ok(json:{locked:'password|salt',ignoreNull:true}) @Fail(http:500) | by 0 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:25,075 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/login' >> (UserModule.java:57).login : Object | @Ok(json:{locked:'password|salt',ignoreNull:true}) @Fail(http:500) | by 0 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:25,076 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/logout' >> (UserModule.java:75).logout : void | @Ok(>>:/user/) @Fail(http:500) | by 0 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:25,077 org.nutz.mvc.impl.UrlMappingImpl.print(UrlMappingImpl.java:146) DEBUG - '/user/login' >> (UserModule.java:133).loginPage : void | @Ok(jsp:jsp.user.login) @Fail(http:500) | by 0 Filters | (I:UTF-8/O:UTF-8)
2018-04-11 18:55:25,077 org.nutz.mvc.impl.NutLoading.evalUrlMapping(NutLoading.java:217) INFO - Found 17 module methods
2018-04-11 18:55:25,078 org.nutz.mvc.impl.NutLoading.evalLocalization(NutLoading.java:303) DEBUG - Localization: org.nutz.mvc.impl.NutMessageLoader('msg/') dft<zh-CN>
2018-04-11 18:55:25,082 org.nutz.resource.Scans.scan(Scans.java:274) DEBUG - Found 1 resource by src( msg/ ) , regex( ^.+[.]properties$ )
2018-04-11 18:55:25,082 org.nutz.mvc.impl.NutMessageLoader.load(NutMessageLoader.java:27) DEBUG - Load Messages in 1 resource : [[File[E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\nutzbook\WEB-INF\classes\msg\zh-CN\user.properties]]]
2018-04-11 18:55:25,083 org.nutz.mvc.impl.NutMessageLoader.load(NutMessageLoader.java:95) DEBUG - Message Loaded, size = 2
2018-04-11 18:55:25,086 org.nutz.mvc.impl.NutLoading.createSessionProvider(NutLoading.java:410) INFO - SessionBy --> org.nutz.integration.shiro.ShiroSessionProvider@655e3dc4
2018-04-11 18:55:25,086 org.nutz.mvc.impl.NutLoading.evalSetup(NutLoading.java:271) INFO - Setup application...
2018-04-11 18:55:25,089 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) DEBUG - Get 'dao'<interface org.nutz.dao.Dao>
2018-04-11 18:55:25,091 org.nutz.ioc.aop.SimpleAopMaker.<init>(SimpleAopMaker.java:79) DEBUG - Load AopConfigure for anno=org.nutz.ioc.aop.Aop by type=org.nutz.ioc.aop.config.impl.AnnotationAopConfigration
2018-04-11 18:55:25,092 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:177) DEBUG - >> Load definition name=dao
2018-04-11 18:55:25,093 org.nutz.ioc.loader.map.MapLoader.load(MapLoader.java:67) DEBUG - Loading define for name=dao
2018-04-11 18:55:25,099 org.nutz.ioc.loader.combo.ComboIocLoader.load(ComboIocLoader.java:161) DEBUG - Found IocObject(dao) in JsonLoader(paths=[ioc/])
2018-04-11 18:55:25,099 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:209) DEBUG - >> Make...'dao'<interface org.nutz.dao.Dao>
2018-04-11 18:55:25,113 org.nutz.ioc.aop.impl.DefaultMirrorFactory.getMirror(DefaultMirrorFactory.java:70) DEBUG - Load class org.nutz.dao.impl.NutDao without AOP
2018-04-11 18:55:25,115 org.nutz.ioc.impl.ScopeContext.save(ScopeContext.java:64) DEBUG - Save object 'dao' to [app]
2018-04-11 18:55:25,117 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) DEBUG - Get 'dataSource'<>
2018-04-11 18:55:25,118 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:177) DEBUG - >> Load definition name=dataSource
2018-04-11 18:55:25,118 org.nutz.ioc.loader.map.MapLoader.load(MapLoader.java:67) DEBUG - Loading define for name=dataSource
2018-04-11 18:55:25,128 org.nutz.ioc.loader.combo.ComboIocLoader.load(ComboIocLoader.java:161) DEBUG - Found IocObject(dataSource) in JsonLoader(paths=[ioc/])
2018-04-11 18:55:25,129 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:209) DEBUG - >> Make...'dataSource'<>
2018-04-11 18:55:25,151 org.nutz.ioc.aop.impl.DefaultMirrorFactory.getMirror(DefaultMirrorFactory.java:70) DEBUG - Load class com.alibaba.druid.pool.DruidDataSource without AOP
2018-04-11 18:55:25,151 org.nutz.ioc.impl.ScopeContext.save(ScopeContext.java:64) DEBUG - Save object 'dataSource' to [app]
2018-04-11 18:55:25,154 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) DEBUG - Get 'conf'<>
2018-04-11 18:55:25,154 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:177) DEBUG - >> Load definition name=conf
2018-04-11 18:55:25,154 org.nutz.ioc.loader.map.MapLoader.load(MapLoader.java:67) DEBUG - Loading define for name=conf
2018-04-11 18:55:25,165 org.nutz.ioc.loader.combo.ComboIocLoader.load(ComboIocLoader.java:161) DEBUG - Found IocObject(conf) in JsonLoader(paths=[ioc/])
2018-04-11 18:55:25,165 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:209) DEBUG - >> Make...'conf'<>
2018-04-11 18:55:25,166 org.nutz.ioc.aop.impl.DefaultMirrorFactory.getMirror(DefaultMirrorFactory.java:70) DEBUG - Load class org.nutz.ioc.impl.PropertiesProxy without AOP
2018-04-11 18:55:25,166 org.nutz.ioc.impl.ScopeContext.save(ScopeContext.java:64) DEBUG - Save object 'conf' to [app]
2018-04-11 18:55:25,218 org.nutz.resource.Scans.scan(Scans.java:274) DEBUG - Found 3 resource by src( custom/ ) , regex( ^.+[.]properties$ )
2018-04-11 18:55:25,219 org.nutz.ioc.impl.PropertiesProxy.setPaths(PropertiesProxy.java:113) DEBUG - load properties from File[E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\nutzbook\WEB-INF\classes\custom\cron.properties]
2018-04-11 18:55:25,219 org.nutz.ioc.impl.PropertiesProxy.setPaths(PropertiesProxy.java:113) DEBUG - load properties from File[E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\nutzbook\WEB-INF\classes\custom\db.properties]
2018-04-11 18:55:25,220 org.nutz.ioc.impl.PropertiesProxy.setPaths(PropertiesProxy.java:113) DEBUG - load properties from File[E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\nutzbook\WEB-INF\classes\custom\mail.properties]
2018-04-11 18:55:25,506 com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:715) INFO - {dataSource-1} inited
2018-04-11 18:55:25,507 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) DEBUG - Get 'dataSource'<>
2018-04-11 18:55:25,707 org.nutz.dao.jdbc.Jdbcs.<clinit>(Jdbcs.java:90) DEBUG - Jdbcs init complete
2018-04-11 18:55:25,708 org.nutz.dao.jdbc.Jdbcs.getExpert(Jdbcs.java:103) INFO - Get Connection from DataSource for JdbcExpert, if you lock at here, check your database server and configure
2018-04-11 18:55:25,973 org.nutz.dao.impl.DaoSupport.setDataSource(DaoSupport.java:188) DEBUG - select expert : org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert
2018-04-11 18:55:25,983 org.nutz.dao.impl.DaoSupport$1.invoke(DaoSupport.java:199) DEBUG - JDBC Driver --> mysql-connector-java-5.1.37 ( Revision: 09940f05b4c98150f352e787a2549f11a2e9da93 )
2018-04-11 18:55:25,984 org.nutz.dao.impl.DaoSupport$1.invoke(DaoSupport.java:200) DEBUG - JDBC Name --> MySQL Connector Java
2018-04-11 18:55:25,984 org.nutz.dao.impl.DaoSupport$1.invoke(DaoSupport.java:202) DEBUG - JDBC URL --> jdbc:mysql://127.0.0.1:3306/nutzbook
2018-04-11 18:55:26,092 org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert.checkDataSource(MysqlJdbcExpert.java:206) DEBUG - Mysql : character_set_client=utf8
2018-04-11 18:55:26,093 org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert.checkDataSource(MysqlJdbcExpert.java:206) DEBUG - Mysql : character_set_connection=utf8
2018-04-11 18:55:26,093 org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert.checkDataSource(MysqlJdbcExpert.java:206) DEBUG - Mysql : character_set_database=utf8
2018-04-11 18:55:26,093 org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert.checkDataSource(MysqlJdbcExpert.java:206) DEBUG - Mysql : character_set_filesystem=binary
2018-04-11 18:55:26,093 org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert.checkDataSource(MysqlJdbcExpert.java:206) DEBUG - Mysql : character_set_results=
2018-04-11 18:55:26,093 org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert.checkDataSource(MysqlJdbcExpert.java:206) DEBUG - Mysql : character_set_server=utf8
2018-04-11 18:55:26,094 org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert.checkDataSource(MysqlJdbcExpert.java:206) DEBUG - Mysql : character_set_system=utf8
2018-04-11 18:55:26,094 org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert.checkDataSource(MysqlJdbcExpert.java:206) DEBUG - Mysql : character_sets_dir=D:\mysql\share\charsets\
2018-04-11 18:55:26,095 org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert.checkDataSource(MysqlJdbcExpert.java:213) DEBUG - Mysql : binlog_format=STATEMENT
2018-04-11 18:55:26,096 org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert.checkDataSource(MysqlJdbcExpert.java:220) DEBUG - Mysql : database=nutzbook
2018-04-11 18:55:26,097 org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert.checkDataSource(MysqlJdbcExpert.java:226) DEBUG - Mysql : user=root@localhost
2018-04-11 18:55:26,140 org.nutz.dao.impl.DaoSupport.setDataSource(DaoSupport.java:221) DEBUG - Database info --> MYSQL:[MySQL - 5.5.56]
2018-04-11 18:55:26,249 org.nutz.resource.Scans.scan(Scans.java:274) DEBUG - Found 18 resource by src( net/wendal/nutzbook/ ) , regex( ^.+[.]class$ )
2018-04-11 18:55:26,261 org.nutz.dao.impl.sql.run.NutDaoExecutor.printSQL(NutDaoExecutor.java:388) DEBUG - SELECT COUNT(*) FROM t_user
2018-04-11 18:55:26,264 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) DEBUG - Get 'nutQuartzCronJobFactory'<class org.nutz.integration.quartz.NutQuartzCronJobFactory>
2018-04-11 18:55:26,265 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:177) DEBUG - >> Load definition name=nutQuartzCronJobFactory
2018-04-11 18:55:26,265 org.nutz.ioc.loader.map.MapLoader.load(MapLoader.java:67) DEBUG - Loading define for name=nutQuartzCronJobFactory
2018-04-11 18:55:26,265 org.nutz.ioc.loader.combo.ComboIocLoader.load(ComboIocLoader.java:161) DEBUG - Found IocObject(nutQuartzCronJobFactory) in QuartzIocLoader@688174510
2018-04-11 18:55:26,265 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:209) DEBUG - >> Make...'nutQuartzCronJobFactory'<class org.nutz.integration.quartz.NutQuartzCronJobFactory>
2018-04-11 18:55:26,267 org.nutz.ioc.aop.impl.DefaultMirrorFactory.getMirror(DefaultMirrorFactory.java:70) DEBUG - Load class org.nutz.integration.quartz.NutQuartzCronJobFactory without AOP
2018-04-11 18:55:26,267 org.nutz.ioc.impl.ScopeContext.save(ScopeContext.java:64) DEBUG - Save object 'nutQuartzCronJobFactory' to [app]
2018-04-11 18:55:26,272 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) DEBUG - Get 'scheduler'<>
2018-04-11 18:55:26,273 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:177) DEBUG - >> Load definition name=scheduler
2018-04-11 18:55:26,273 org.nutz.ioc.loader.map.MapLoader.load(MapLoader.java:67) DEBUG - Loading define for name=scheduler
2018-04-11 18:55:26,273 org.nutz.ioc.loader.combo.ComboIocLoader.load(ComboIocLoader.java:161) DEBUG - Found IocObject(scheduler) in QuartzIocLoader@688174510
2018-04-11 18:55:26,274 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:209) DEBUG - >> Make...'scheduler'<>
2018-04-11 18:55:26,274 org.nutz.ioc.impl.ScopeContext.save(ScopeContext.java:64) DEBUG - Save object 'scheduler' to [app]
2018-04-11 18:55:26,316 org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1172) INFO - Using default implementation for ThreadExecutor
2018-04-11 18:55:26,333 org.quartz.core.SchedulerSignalerImpl.<init>(SchedulerSignalerImpl.java:61) INFO - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2018-04-11 18:55:26,333 org.quartz.core.QuartzScheduler.<init>(QuartzScheduler.java:240) INFO - Quartz Scheduler v.2.2.3 created.
2018-04-11 18:55:26,335 org.quartz.simpl.RAMJobStore.initialize(RAMJobStore.java:155) INFO - RAMJobStore initialized.
2018-04-11 18:55:26,335 org.quartz.core.QuartzScheduler.initialize(QuartzScheduler.java:305) INFO - Scheduler meta-data: Quartz Scheduler (v2.2.3) 'NutzbookScheduler' 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 3 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
2018-04-11 18:55:26,335 org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1327) INFO - Quartz scheduler 'NutzbookScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
2018-04-11 18:55:26,336 org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1331) INFO - Quartz scheduler version: 2.2.3
2018-04-11 18:55:26,336 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) DEBUG - Get 'jobFactory'<>
2018-04-11 18:55:26,336 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:177) DEBUG - >> Load definition name=jobFactory
2018-04-11 18:55:26,336 org.nutz.ioc.loader.map.MapLoader.load(MapLoader.java:67) DEBUG - Loading define for name=jobFactory
2018-04-11 18:55:26,338 org.nutz.ioc.loader.combo.ComboIocLoader.load(ComboIocLoader.java:161) DEBUG - Found IocObject(jobFactory) in QuartzIocLoader@688174510
2018-04-11 18:55:26,338 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:209) DEBUG - >> Make...'jobFactory'<>
2018-04-11 18:55:26,339 org.nutz.ioc.aop.impl.DefaultMirrorFactory.getMirror(DefaultMirrorFactory.java:70) DEBUG - Load class org.nutz.integration.quartz.NutQuartzJobFactory without AOP
2018-04-11 18:55:26,339 org.nutz.ioc.impl.ScopeContext.save(ScopeContext.java:64) DEBUG - Save object 'jobFactory' to [app]
2018-04-11 18:55:26,383 org.quartz.core.QuartzScheduler.setJobFactory(QuartzScheduler.java:2311) INFO - JobFactory set to: org.nutz.integration.quartz.NutQuartzJobFactory@18f4a376
2018-04-11 18:55:26,384 org.quartz.core.QuartzScheduler.start(QuartzScheduler.java:575) INFO - Scheduler NutzbookScheduler_$_NON_CLUSTERED started.
2018-04-11 18:55:26,384 org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:276) DEBUG - batch acquisition of 0 triggers
2018-04-11 18:55:26,385 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) DEBUG - Get 'conf'<>
2018-04-11 18:55:26,385 org.nutz.integration.quartz.NutQuartzCronJobFactory.init(NutQuartzCronJobFactory.java:35) DEBUG - job define name=net.wendal.nutzbook.quartz.job.CleanNonActiveUserJob cron=0 0/2 * * * ?
2018-04-11 18:55:26,398 org.nutz.integration.quartz.NutQuartzCronJobFactory.init(NutQuartzCronJobFactory.java:28) DEBUG - found cron job packages = net.wendal.nutzbook.quartz.job
2018-04-11 18:55:26,398 org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:276) DEBUG - batch acquisition of 0 triggers
2018-04-11 18:55:26,400 org.nutz.resource.Scans.scan(Scans.java:274) DEBUG - Found 1 resource by src( net/wendal/nutzbook/quartz/job/ ) , regex( ^.+[.]class$ )
2018-04-11 18:55:26,400 org.nutz.mvc.impl.NutLoading.load(NutLoading.java:141) INFO - Nutz.Mvc[nutz] is up in 1841ms
2018-04-11 18:55:26,401 org.nutz.mvc.NutFilter._init(NutFilter.java:117) INFO - exclusionsPrefix = ^(/rs/|/druid/)
2018-4-11 18:55:26 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\nutzbook has finished in 4,127 ms
2018-4-11 18:55:26 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\ROOT
2018-4-11 18:55:26 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory E:\nutztomcat\tomcat\apache-tomcat-7.0.73\webapps\ROOT has finished in 45 ms
2018-4-11 18:55:26 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-apr-8080"]
2018-4-11 18:55:26 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-apr-8009"]
2018-4-11 18:55:26 org.apache.catalina.startup.Catalina start
信息: Server startup in 5125 ms
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>NutzBook demo</title>
<!-- 导入jquery http://code.jquery.com/jquery-2.0.3.min.js-->
<script type="text/javascript" src="${base}/rs/js/jquery-2.0.3.min.js"></script>
<!-- 把user id复制到一个js变量 -->
<script type="text/javascript">
var me = '<%=session.getAttribute("me") %>';
var base = '${base}';
$(function() {
$("#login_button").click(function() {
$.ajax({
url : base + "/user/login",
type: "POST",
data:$('#loginForm').serialize(),
error: function(request) {
alert("Connection error");
},
dataType:"json",
success: function(data) {
if (data && data.ok) {
alert("登陆成功");
location.reload();
} else {
alert(data.msg);
}
}
});
return false;
});
if (me != "null") {
$("#login_div").hide();
$("#userInfo").html("您的Id是" + me);
$("#user_info_div").show();
} else {
$("#login_div").show();
$("#user_info_div").hide();
}
});
</script>
</head>
<body>
<div id="login_div">
<form action="#" id="loginForm" method="post">
用户名 <input name="username" type="text" value="admin">
密码 <input name="password" type="password" value="123456">
<script type="text/javascript">
function next_captcha() {
$("#captcha_img").attr("src", "${base}/captcha/next?_=" + new Date().getTime());
}
</script>
验证码<input name="captcha" type="text" value="">
<img id="captcha_img" onclick="next_captcha();return false;" src="${base}/captcha/next"></img>
<button id="login_button">提交</button>
</form>
</div>
<div id="user_info_div">
<p id="userInfo"></p>
<a href="${base}/user/logout">登出</a>
</div>
</body>
</html>
UserModule.java
package net.wendal.nutzbook.module;
import java.util.Date;
import javax.servlet.http.HttpSession;
import net.wendal.nutzbook.bean.User;
import net.wendal.nutzbook.bean.UserProfile;
import net.wendal.nutzbook.service.UserService;
import net.wendal.nutzbook.util.Toolkit;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresUser;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.QueryResult;
import org.nutz.dao.pager.Pager;
import org.nutz.integration.shiro.SimpleShiroToken;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.Scope;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Attr;
import org.nutz.mvc.annotation.By;
import org.nutz.mvc.annotation.Fail;
import org.nutz.mvc.annotation.Filters;
import org.nutz.mvc.annotation.GET;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.POST;
import org.nutz.mvc.annotation.Param;
import org.nutz.mvc.filter.CheckSession;
@IocBean // 声明为Ioc容器中的一个Bean
@At("/user") // 整个模块的路径前缀
@Ok("json:{locked:'password|salt',ignoreNull:true}") // 忽略password和salt属性,忽略空属性的json输出
@Fail("http:500") // 抛出异常的话,就走500页面
public class UserModule extends BaseModule{
@Inject
protected UserService userService;
@At
public int count() { // 统计用户数的方法,算是个测试点
return dao.count(User.class);
}
@At
@POST
public Object login(@Param("username")String username,
@Param("password")String password,
@Param("captcha")String captcha,
@Attr(scope=Scope.SESSION, value="nutz_captcha")String _captcha,
HttpSession session) {
NutMap re = new NutMap();
if (!Toolkit.checkCaptcha(_captcha, captcha)) {
return re.setv("ok", false).setv("msg", "验证码错误");
}
int userId = userService.fetch(username, password);
if (userId < 0) {
return re.setv("ok", false).setv("msg", "用户名或密码错误");
} else {
session.setAttribute("me", userId);
// 完成nutdao_realm后启用.
SecurityUtils.getSubject().login(new SimpleShiroToken(userId));
return re.setv("ok", true);
}
}
@At
@Ok(">>:/user/") // 跟其他方法不同,这个方法完成后就跳转首页了
public void logout(HttpSession session) {
session.invalidate();
}
@At
@RequiresUser
public Object add(@Param("..")User user) { // 两个点号是按对象属性一一设置
NutMap re = new NutMap();
String msg = checkUser(user, true);
if (msg != null){
return re.setv("ok", false).setv("msg", msg);
}
user = userService.add(user.getName(), user.getPassword());
return re.setv("ok", true).setv("data", user);
}
@At //修改
@RequiresUser
public Object update(@Param("password")String password, @Attr("me")int me) {
if (Strings.isBlank(password) || password.length() < 6)
return new NutMap().setv("ok", false).setv("msg", "密码不符合要求");
userService.updatePassword(me, password);
return new NutMap().setv("ok", true);
}
@At
@Aop(TransAop.READ_COMMITTED)
@RequiresUser
public Object delete(@Param("id")int id, @Attr("me")int me) {
if (me == id) {
return new NutMap().setv("ok", false).setv("msg", "不能删除当前用户!!");
}
dao.delete(User.class, id); // 再严谨一些的话,需要判断是否为>0
dao.clear(UserProfile.class, Cnd.where("userId", "=", me));
return new NutMap().setv("ok", true);
}
@RequiresUser
@At
public Object query(@Param("name")String name, @Param("..")Pager pager) {
Cnd cnd = Strings.isBlank(name)? null : Cnd.where("name", "like", "%"+name+"%");
QueryResult qr = new QueryResult();
qr.setList(dao.query(User.class, cnd, pager));
pager.setRecordCount(dao.count(User.class, cnd));
qr.setPager(pager);
return qr; //默认分页是第1页,每页20条
}
@At("/")
@RequiresUser
@Ok("jsp:jsp.user.lonin") // 真实路径是 /WEB-INF/jsp/user/login.jsp
public void index() {
}
@GET
@At("/login")
@Ok("jsp:jsp.user.login") // 降内部重定向到登录jsp
public void loginPage() {}
protected String checkUser(User user, boolean create) {
if (user == null) {
return "空对象";
}
if (create) {
if (Strings.isBlank(user.getName()) || Strings.isBlank(user.getPassword()))
return "用户名/密码不能为空";
} else {
if (Strings.isBlank(user.getPassword()))
return "密码不能为空";
}
String passwd = user.getPassword().trim();
if (6 > passwd.length() || passwd.length() > 12) {
return "密码长度错误";
}
user.setPassword(passwd);
if (create) {
int count = dao.count(User.class, Cnd.where("name", "=", user.getName()));
if (count != 0) {
return "用户名已经存在";
}
} else {
if (user.getId() < 1) {
return "用户Id非法";
}
}
if (user.getName() != null)
user.setName(user.getName().trim());
return null;
}
}
CleanNonActiveUserJob.java
package net.wendal.nutzbook.quartz.job;
import java.util.Date;
import net.wendal.nutzbook.bean.User;
import net.wendal.nutzbook.bean.UserProfile;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.log.Log;
import org.nutz.log.Logs;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
*
*quartz插件类
*
*/
@IocBean
public class CleanNonActiveUserJob implements Job {
private static final Log log = Logs.get();
@Inject protected Dao dao;
public void execute(JobExecutionContext context) throws JobExecutionException {
log.debug("clean Non-Active User , start");
Date deadtime = new Date(System.currentTimeMillis() - 365*24*60*60*1000L); // 一年, 测试的时候可以改成1小时之类的
Cnd cnd = Cnd.where("userId", ">", 10).and("createTime", "<", deadtime).and(Cnd.exps("emailChecked", "=", false).or("email", "IS", null));
int deleted = dao.clear(UserProfile.class, cnd);
log.debugf("delete %d UserProfile", deleted);
Sql sql = Sqls.create("delete from $user_table where id > 10 and not exists (select 1 from $user_profile_table where $user_table.id = uid ) and ct < @deadtime");
sql.vars().set("user_table", dao.getEntity(User.class).getTableName());
sql.vars().set("user_profile_table", dao.getEntity(UserProfile.class).getTableName());
sql.params().set("deadtime", deadtime);
dao.execute(sql);
log.debugf("delete %d User", sql.getUpdateCount());
log.debug("clean Non-Active User , Done");
}
}