Giter Site home page Giter Site logo

nutzam / nutzboot Goto Github PK

View Code? Open in Web Editor NEW
494.0 494.0 136.0 6.83 MB

NutzBoot,简称NB,是可靠的企业级微服务框架,提供自动配置,嵌入式web服务,分布式会话,服务治理,负载均衡,hystrix,RPC等一篮子解决方案

Home Page: https://nutz.io

License: Apache License 2.0

Java 68.46% HTML 4.95% JavaScript 24.95% CSS 1.54% Dockerfile 0.10%
dubbo jetty microservice nutz nutzboot seata undertow zbus zookeeper

nutzboot's Introduction

Nutz 官网的源代码

官网的迭代

目前官网已经迭代了2个版本

  • 1.0版本,由nutz创始人zozoh编写
  • 2.0版本,由nutz提交者胖五编写并维护

2.0版本主要解决了网页不能自适应的问题,并且从新梳理了网站结构。

目前nutz官方社区已经上线,两个网站有一些交叉内容,但又没有统一维护,所以接下来的改进计划主要是围绕2个网站的融合进行的。2.x版本将在不断完善官网功能并统一整合好社区内容后,升级为3.0版本。

也就说以后nutz官网也要开始发版本了。

2.x开发计划

目前开发思路有两个

  1. 整合社区网站内容
  2. 提高nutz官网逼格

1就不用说了,就是整合2个网站内容

2除了让官网更好用,样子更好看以外,主要是提供一些nutz相关项目的展示与阐述nutz一些开发理念,更多是推广方面内容,方便大家去安利nutz

目前开发计划如下:

  • 新版网页(BS重写)上线(2017.01上线)
  • 文档页根据社区反馈重构(2017.05上线)
  • demo展示,子项目展示页 (预计2017.06上线)
  • 官网新闻页 (预计2017.06上线)
  • nutz项目参与人 (预计2017.07上线)
  • nutz网站(官网,社区)新版设计稿 (预计2017.07完成)
  • nutz网站基础样式指南与控件 (预计2017.08完成)
  • nutz网站3.0上线 (预计2017.10上线)

更多的内容可能在开发过程中加入进来,也欢迎各位喜欢nutz朋友提出好的建议给我们, 来提几个issue

最后来点鼓励吧

该项目无盈利,完全是个人利用空闲时间进行开发,所以如果nutz网站的改进对你有了帮助,欢迎 “打赏” 以资鼓励。

请me喝杯咖啡吧!

向胖五支付吧_w500

nutzboot's People

Contributors

albinhdk avatar denghuafeng avatar dependabot[bot] avatar eggsblue avatar haoqoo avatar happyday517 avatar hellococooo avatar howe avatar liangchengzhi avatar lx19990999 avatar pangwu86 avatar qinerg avatar realoldroot avatar rekoe avatar swtseaman avatar threefish avatar tiankongkm avatar tomyule avatar wendal avatar wizzercn avatar wolfboys avatar ywjno avatar zozoh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nutzboot's Issues

undertow.staticPath未配置则启动报错

UndertowStarter.java

if (Strings.isBlank(conf.get(PROP_STATIC_PATH)) &&
("static".equals(conf.get(PROP_STATIC_PATH)) || "static/".equals(conf.get(PROP_STATIC_PATH))))
return Arrays.asList("static", "webapp");
return Arrays.asList(conf.get(PROP_STATIC_PATH), "static", "webapp");

这一段,如果undertow.staticPath没有配置,则执行return Arrays.asList(conf.get(PROP_STATIC_PATH), "static", "webapp");
但这时候conf.get(PROP_STATIC_PATH)为null,报错

nutzboot-starter-beetl使用css的话应该怎么做

比如我有一个 layout.css 需要使用的话,这个文件应该放在哪个文件夹下,以及在页面中该如何写

也就是说,在页面写 ${base}/assets/css/layout.css的话,这个路径怎么对应到 resources 文件夹下

feign 方法转换问题

@haoqoo 请问这个怎么转换成feign的写法?
RT

	String body = Json.toJson(NutMap.NEW().addv("touser", sb).addv("agentid", "1111111").addv("msgtype", "text").addv("text", NutMap.NEW().addv("content", text + "服务器时间:" + Times.sDT(data))));
		Http.post3("https://oapi.dingtalk.com/message/send?access_token=" + getAccessToken(), body, Header.create().asJsonContentType(), 6000).getContent();
	

Swagger的两个问题

1、如果使用了JDK9,会报javax.xml.bind.annotation.XmlElement这个类找不到,我还不知道原因,事实上这个类在9里面也是有的,不过报错是确实发生了。
image

2、会请求谷歌的开源字体,墙内用户体验不好,可以改进一下。

用ioc js配置的ehcache的cacheManager是null,导致daocache抛出NPE

ehcache.js 文件中配置cacheManage

var ioc = {
	cacheManager : {
		type : "net.sf.ehcache.CacheManager",
		factory : "net.sf.ehcache.CacheManager#getCacheManager",
		args : [ "nutzbook" ]
	}
};
dao.js  加载缓存
var ioc = {
	dao : {
		type : "org.nutz.dao.impl.NutDao",
		args : [ {
			refer : "dataSource"
		} ],
		fields : {
			interceptors : [ {
				refer : "cacheExecutor"
			}, "log" ]
		}
	},
	cacheExecutor : {
		type : "org.nutz.plugins.cache.dao.DaoCacheInterceptor",
		fields : {
			cacheProvider : {
				refer : "cacheProvider"
			},
			cachedTableNames : [ "t_user" ],
			enableWhenTrans : false,
			db : "MYSQL"
		}
	},
	cacheProvider : {
		type : "org.nutz.plugins.cache.dao.impl.provider.EhcacheDaoCacheProvider",
		fields : {
			cacheManager : {
				refer : "cacheManager"
			}
		},
		events : {
			create : "init"
		}
	}
};

cacheManager加载失败

[WARN ] 15:02:57.004 org.nutz.plugins.cache.dao.CachedNutDaoExecutor.exec(CachedNutDaoExecutor.java:201) - clear cache fail: [system_user]
java.lang.NullPointerException
	at org.nutz.plugins.cache.dao.impl.provider.EhcacheDaoCacheProvider.getCache(EhcacheDaoCacheProvider.java:44)
	at org.nutz.plugins.cache.dao.impl.provider.EhcacheDaoCacheProvider.clear(EhcacheDaoCacheProvider.java:34)
	at org.nutz.plugins.cache.dao.CachedNutDaoExecutor.exec(CachedNutDaoExecutor.java:196)
	at org.nutz.plugins.cache.dao.DaoCacheInterceptor.filter(DaoCacheInterceptor.java:18)
	at org.nutz.dao.DaoInterceptorChain.doChain(DaoInterceptorChain.java:64)
	at org.nutz.dao.DaoInterceptorChain.invoke(DaoInterceptorChain.java:139)
	at org.nutz.dao.impl.sql.run.NutDaoRunner.runCallback(NutDaoRunner.java:158)
	at org.nutz.dao.impl.sql.run.NutDaoRunner._runWithTransaction(NutDaoRunner.java:104)
	at org.nutz.dao.impl.sql.run.NutDaoRunner._run(NutDaoRunner.java:88)
	at org.nutz.dao.impl.sql.run.NutDaoRunner$1.run(NutDaoRunner.java:74)
	at org.nutz.trans.Trans.exec(Trans.java:174)
	at org.nutz.dao.impl.sql.run.NutDaoRunner.run(NutDaoRunner.java:72)
	at org.nutz.dao.impl.DaoSupport.run(DaoSupport.java:240)
	at org.nutz.dao.impl.DaoSupport._exec(DaoSupport.java:252)
	at org.nutz.dao.impl.DaoSupport.execute(DaoSupport.java:236)
	at org.nutz.dao.impl.jdbc.mysql.MysqlJdbcExpert.createEntity(MysqlJdbcExpert.java:176)
	at org.nutz.dao.impl.NutDao.create(NutDao.java:812)
	at org.nutz.dao.util.Daos.createTablesInPackage(Daos.java:473)
	at com.rekoe.MainLauncher.init(MainLauncher.java:44)
	at com.rekoe.MainLauncher$FM$init$62febe830a4a6764c634d9e263964cee.invoke(MainLauncher.java)
	at org.nutz.ioc.impl.ObjectMakerImpl$2.trigger(ObjectMakerImpl.java:179)
	at org.nutz.ioc.weaver.DefaultWeaver.onCreate(DefaultWeaver.java:72)
	at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:140)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:216)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:245)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:152)
	at org.nutz.boot.NbApp.run(NbApp.java:171)
	at com.rekoe.MainLauncher.main(MainLauncher.java:101)

shiro的rememberMe报javax.crypto.BadPaddingException: Given final block not properly padded

使用

 UsernamePasswordToken token = new UsernamePasswordToken(userName, password);
 token.setRememberMe(true); 

error

[DEBUG] 15:44:11.435 org.apache.shiro.web.servlet.SimpleCookie.readValue(SimpleCookie.java:389) - Found 'rememberMe' cookie value [exxxOMM+Z6e0vQ5zJllNE+6esgrAqrMBC0qZI6WoAGhI4XvDVDk+e0s7Y8LHs60XlFBgw532K5yyO5/WB9GcE5be7GDBvCGxoVgaPYU6Px+Gnjv8RYZMdx8tgfwB085TtDM8BIZVyvEkjSD7DkkvtzdiOXLxQOwipjp0h3ElgvPCTHb2Q7tABKfKZ7Y0Gu/FJI/bPfPBYhLzbhpzpwRoVyUDdr2wekJcR76a2MSn25xvtda5RhPIXSXzdiUohnRuDhVBqkFw/QF1FsBbrCNwhazG6895LDTgUBoo52jasfO/3k74MtOk81cB8OGGVmX1vGVlCf67zRXY190smvVKVFA9p1X6bHlSYpsSep6c3y1qeYwTFloJh7YVAatbJCpDq4P3q6RelBrRrg4gNLWIfvD9y32XwwI8LlQftYz/ju5i2lHAUBZyU4OREmJHzpn+yEO5/YxQFcnihQw/th53hnN+YQSki5cJsgivRNPX2j5c5MfMJatfF8tOY78xQbxc+NaBjiLZPh2S6mYUn1UwH8JiRDsWiX5/MBDV6mdLO6fEjiL0nQgurTch0xmL4wKhqCQkOU0TLkKqE7hhy3BC86vrx9MJTgCnUHG2zkR+uwZi6V8c8YG+wBY79PleZxfXgO8XCn17g0uePjTOvKEaDRxgF29mhCJNg+kCmyY+WPIbY8iRU1mWbJKPKv5vCu5qPv0DVLZ7ZtofIBg5zNt9Y4v7EvFJ/MxlMdYEaCmokWLvnSfS0d9Vinyg5RF9TMk0arDLzVkoJplB8f8KuVa5CaoefZsZUqSlth6BREsX2bRL8wObuzYvtSHBpe5w15eE2LjBAW1fZStd9GyiA4GUdK/qr4ztk0iG5bhF5LMhr5vdqICiHeTt3r12HkUak+x0zmFbS1W8Ny1SAG3AZianY79QD8qU8cHvcXaKZFBG+y4UGgaALYAL5NnAGKmC90FOlgrLvgHnoOnq37zHAh2VclgXHez+wWgELNG+eWMp1+G8mvI+xZr72I2uVcUjGwAdFddDV8GOq+zw4bbQljXy7ihNQSOz9KloDxKbCr3Zy5cNM7AgUM92dzRz717VYEh/z9pXv+iaw3r/+BasCVPlfsJ8Fh/lP8RihdNu1VuzSxd8QIh/mbCyCFP1ubZ0v9iJEXl9m7ouYMas8vM9xZ9436pJi6eRj6DQsuNmpM1xyxmoAx0L0naWeAXNp9OMpkR0ymoy3BGkMJqzEgjZsbUH3f0p1dhZxx8E6QVgGzn+WbdbqMWuyLK04mJjgNToFNqZ2CT/05oYbGkeCIYSh5/cqWeLzuZq2fWxd+nLk0JRRBO/aixZCMSbuK2Mivll7xuHXXa8kfPxRbNeAH2xWn+DtKPFaJwC3ymDES5ZKV5Bm/NMWgja1EmOdCPNH6B3u/DsnbXnp9dANyZVbblceeYBUPJCklyNBmCrTJFADM47D1IOVOzuGFWdKzG5ST6nMM+l]
[DEBUG] 15:44:11.435 org.apache.shiro.web.servlet.SimpleCookie.readValue(SimpleCookie.java:389) - Found 'rememberMe' cookie value [exxxOMM+Z6e0vQ5zJllNE+6esgrAqrMBC0qZI6WoAGhI4XvDVDk+e0s7Y8LHs60XlFBgw532K5yyO5/WB9GcE5be7GDBvCGxoVgaPYU6Px+Gnjv8RYZMdx8tgfwB085TtDM8BIZVyvEkjSD7DkkvtzdiOXLxQOwipjp0h3ElgvPCTHb2Q7tABKfKZ7Y0Gu/FJI/bPfPBYhLzbhpzpwRoVyUDdr2wekJcR76a2MSn25xvtda5RhPIXSXzdiUohnRuDhVBqkFw/QF1FsBbrCNwhazG6895LDTgUBoo52jasfO/3k74MtOk81cB8OGGVmX1vGVlCf67zRXY190smvVKVFA9p1X6bHlSYpsSep6c3y1qeYwTFloJh7YVAatbJCpDq4P3q6RelBrRrg4gNLWIfvD9y32XwwI8LlQftYz/ju5i2lHAUBZyU4OREmJHzpn+yEO5/YxQFcnihQw/th53hnN+YQSki5cJsgivRNPX2j5c5MfMJatfF8tOY78xQbxc+NaBjiLZPh2S6mYUn1UwH8JiRDsWiX5/MBDV6mdLO6fEjiL0nQgurTch0xmL4wKhqCQkOU0TLkKqE7hhy3BC86vrx9MJTgCnUHG2zkR+uwZi6V8c8YG+wBY79PleZxfXgO8XCn17g0uePjTOvKEaDRxgF29mhCJNg+kCmyY+WPIbY8iRU1mWbJKPKv5vCu5qPv0DVLZ7ZtofIBg5zNt9Y4v7EvFJ/MxlMdYEaCmokWLvnSfS0d9Vinyg5RF9TMk0arDLzVkoJplB8f8KuVa5CaoefZsZUqSlth6BREsX2bRL8wObuzYvtSHBpe5w15eE2LjBAW1fZStd9GyiA4GUdK/qr4ztk0iG5bhF5LMhr5vdqICiHeTt3r12HkUak+x0zmFbS1W8Ny1SAG3AZianY79QD8qU8cHvcXaKZFBG+y4UGgaALYAL5NnAGKmC90FOlgrLvgHnoOnq37zHAh2VclgXHez+wWgELNG+eWMp1+G8mvI+xZr72I2uVcUjGwAdFddDV8GOq+zw4bbQljXy7ihNQSOz9KloDxKbCr3Zy5cNM7AgUM92dzRz717VYEh/z9pXv+iaw3r/+BasCVPlfsJ8Fh/lP8RihdNu1VuzSxd8QIh/mbCyCFP1ubZ0v9iJEXl9m7ouYMas8vM9xZ9436pJi6eRj6DQsuNmpM1xyxmoAx0L0naWeAXNp9OMpkR0ymoy3BGkMJqzEgjZsbUH3f0p1dhZxx8E6QVgGzn+WbdbqMWuyLK04mJjgNToFNqZ2CT/05oYbGkeCIYSh5/cqWeLzuZq2fWxd+nLk0JRRBO/aixZCMSbuK2Mivll7xuHXXa8kfPxRbNeAH2xWn+DtKPFaJwC3ymDES5ZKV5Bm/NMWgja1EmOdCPNH6B3u/DsnbXnp9dANyZVbblceeYBUPJCklyNBmCrTJFADM47D1IOVOzuGFWdKzG5ST6nMM+l]
[WARN ] 15:44:11.451 org.apache.shiro.mgt.AbstractRememberMeManager.onRememberedPrincipalFailure(AbstractRememberMeManager.java:449) - There was a failure while trying to retrieve remembered principals.  This could be due to a configuration problem or corrupted principals.  This could also be due to a recently changed encryption key, if you are using a shiro.ini file, this property would be 'securityManager.rememberMeManager.cipherKey' see: http://shiro.apache.org/web.html#Web-RememberMeServices. The remembered identity will be forgotten and not used for this request.
[WARN ] 15:44:11.451 org.apache.shiro.mgt.AbstractRememberMeManager.onRememberedPrincipalFailure(AbstractRememberMeManager.java:449) - There was a failure while trying to retrieve remembered principals.  This could be due to a configuration problem or corrupted principals.  This could also be due to a recently changed encryption key, if you are using a shiro.ini file, this property would be 'securityManager.rememberMeManager.cipherKey' see: http://shiro.apache.org/web.html#Web-RememberMeServices. The remembered identity will be forgotten and not used for this request.
[DEBUG] 15:44:11.456 org.apache.shiro.web.servlet.SimpleCookie.addCookieHeader(SimpleCookie.java:226) - Added HttpServletResponse Cookie [rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Mon, 11-Dec-2017 07:44:11 GMT]
[WARN ] 15:44:11.456 org.apache.shiro.mgt.DefaultSecurityManager.getRememberedIdentity(DefaultSecurityManager.java:609) - Delegate RememberMeManager instance of type [org.apache.shiro.web.mgt.CookieRememberMeManager] threw an exception during getRememberedPrincipals().
org.apache.shiro.crypto.CryptoException: Unable to execute 'doFinal' with cipher instance [javax.crypto.Cipher@4b5f92c0].
	at org.apache.shiro.crypto.JcaCipherService.crypt(JcaCipherService.java:462)
	at org.apache.shiro.crypto.JcaCipherService.crypt(JcaCipherService.java:445)
	at org.apache.shiro.crypto.JcaCipherService.decrypt(JcaCipherService.java:390)
	at org.apache.shiro.crypto.JcaCipherService.decrypt(JcaCipherService.java:382)
	at org.apache.shiro.mgt.AbstractRememberMeManager.decrypt(AbstractRememberMeManager.java:482)
	at org.apache.shiro.mgt.AbstractRememberMeManager.convertBytesToPrincipals(AbstractRememberMeManager.java:419)
	at org.apache.shiro.mgt.AbstractRememberMeManager.getRememberedPrincipals(AbstractRememberMeManager.java:386)
	at org.apache.shiro.mgt.DefaultSecurityManager.getRememberedIdentity(DefaultSecurityManager.java:604)
	at org.apache.shiro.mgt.DefaultSecurityManager.resolvePrincipals(DefaultSecurityManager.java:492)
	at org.apache.shiro.mgt.DefaultSecurityManager.createSubject(DefaultSecurityManager.java:342)
	at org.apache.shiro.subject.Subject$Builder.buildSubject(Subject.java:846)
	at org.apache.shiro.web.subject.WebSubject$Builder.buildWebSubject(WebSubject.java:148)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.createSubject(AbstractShiroFilter.java:292)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:359)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621)
	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621)
	at org.nutz.mvc.WhaleFilter.doFilter(WhaleFilter.java:159)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:541)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1593)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1239)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:481)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1562)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1141)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
	at org.eclipse.jetty.server.Server.handle(Server.java:564)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590)
	at java.lang.Thread.run(Thread.java:748)
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
	at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:989)
	at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:845)
	at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:446)
	at javax.crypto.Cipher.doFinal(Cipher.java:2165)
	at org.apache.shiro.crypto.JcaCipherService.crypt(JcaCipherService.java:459)
	... 43 more
[DEBUG] 15:44:11.458 org.apache.shiro.web.servlet.SimpleCookie.addCookieHeader(SimpleCookie.java:226) - Added HttpServletResponse Cookie [rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Mon, 11-Dec-2017 07:44:11 GMT]
[WARN ] 15:44:11.459 org.apache.shiro.mgt.DefaultSecurityManager.getRememberedIdentity(DefaultSecurityManager.java:609) - Delegate RememberMeManager instance of type [org.apache.shiro.web.mgt.CookieRememberMeManager] threw an exception during getRememberedPrincipals().
org.apache.shiro.crypto.CryptoException: Unable to execute 'doFinal' with cipher instance [javax.crypto.Cipher@196a589b].
	at org.apache.shiro.crypto.JcaCipherService.crypt(JcaCipherService.java:462)
	at org.apache.shiro.crypto.JcaCipherService.crypt(JcaCipherService.java:445)
	at org.apache.shiro.crypto.JcaCipherService.decrypt(JcaCipherService.java:390)
	at org.apache.shiro.crypto.JcaCipherService.decrypt(JcaCipherService.java:382)
	at org.apache.shiro.mgt.AbstractRememberMeManager.decrypt(AbstractRememberMeManager.java:482)
	at org.apache.shiro.mgt.AbstractRememberMeManager.convertBytesToPrincipals(AbstractRememberMeManager.java:419)
	at org.apache.shiro.mgt.AbstractRememberMeManager.getRememberedPrincipals(AbstractRememberMeManager.java:386)
	at org.apache.shiro.mgt.DefaultSecurityManager.getRememberedIdentity(DefaultSecurityManager.java:604)
	at org.apache.shiro.mgt.DefaultSecurityManager.resolvePrincipals(DefaultSecurityManager.java:492)
	at org.apache.shiro.mgt.DefaultSecurityManager.createSubject(DefaultSecurityManager.java:342)
	at org.apache.shiro.subject.Subject$Builder.buildSubject(Subject.java:846)
	at org.apache.shiro.web.subject.WebSubject$Builder.buildWebSubject(WebSubject.java:148)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.createSubject(AbstractShiroFilter.java:292)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:359)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621)
	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621)
	at org.nutz.mvc.WhaleFilter.doFilter(WhaleFilter.java:159)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1621)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:541)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1593)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1239)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:481)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1562)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1141)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
	at org.eclipse.jetty.server.Server.handle(Server.java:564)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:110)
	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590)
	at java.lang.Thread.run(Thread.java:748)
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
	at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:989)
	at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:845)
	at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:446)
	at javax.crypto.Cipher.doFinal(Cipher.java:2165)
	at org.apache.shiro.crypto.JcaCipherService.crypt(JcaCipherService.java:459)
	... 43 more

java.lang.NoSuchMethodError: org.nutz.boot.AppContext.getServerPort(Ljava/lang/String;)I

[DEBUG] 22:06:43.622 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:220) - 	 >> Make...'jedisStarter'<class org.nutz.boot.starter.redis.JedisStarter>
[DEBUG] 22:06:43.622 org.nutz.ioc.impl.ScopeContext.save(ScopeContext.java:64) - Save object 'jedisStarter' to [app] 
[DEBUG] 22:06:43.622 org.nutz.ioc.aop.impl.DefaultMirrorFactory.getMirror(DefaultMirrorFactory.java:70) - Load class org.nutz.boot.starter.redis.JedisStarter without AOP
[DEBUG] 22:06:43.625 org.nutz.resource.Scans.scan(Scans.java:280) - Found 1 resource by src( org/nutz/integration/jedis/jedis.js ) , regex( ^(.+[.])(js|json)$ )
[DEBUG] 22:06:43.625 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:49) - loading [org/nutz/integration/jedis/jedis.js]
[DEBUG] 22:06:43.625 org.nutz.ioc.loader.json.JsonLoader.<init>(JsonLoader.java:57) - Loaded 9 bean define from path=[org/nutz/integration/jedis/jedis.js] --> [redisService, jedisCluster, jedisClusterNodes, jedisClusterWrapper, pubSubService, jedisPoolConfig, jedisPool, jedisAgent, redis]
[INFO ] 22:06:43.637 org.eclipse.jetty.util.log.Log.initialized(Log.java:192) - Logging initialized @632ms to org.eclipse.jetty.util.log.Slf4jLog
[ERROR] 22:06:43.709 org.nutz.boot.NbApp._run(NbApp.java:208) - something happen!!
java.lang.NoSuchMethodError: org.nutz.boot.AppContext.getServerPort(Ljava/lang/String;)I
	at org.nutz.boot.starter.jetty.JettyStarter.getPort(JettyStarter.java:227)
	at org.nutz.boot.starter.jetty.JettyStarter.init(JettyStarter.java:126)
	at org.nutz.boot.AppContext.init(AppContext.java:274)
	at org.nutz.boot.NbApp._run(NbApp.java:194)
	at org.nutz.boot.NbApp.run(NbApp.java:170)
	at com.weixin.vote.MainLauncher.main(MainLauncher.java:41)
[DEBUG] 22:06:43.729 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:163) - Get 'jettyStarter'<interface org.nutz.boot.starter.ServerFace>
[INFO ] 22:06:43.731 org.nutz.ioc.impl.NutIoc.depose(NutIoc.java:284) - org.nutz.ioc.impl.NutIoc@4298289 is closing. startup date [18-01-05 22:06:43.500]
[DEBUG] 22:06:43.732 org.nutz.ioc.impl.ScopeContext.clear(ScopeContext.java:108) - Depose object 'jedisStarter' ...
[DEBUG] 22:06:43.732 org.nutz.ioc.impl.ScopeContext.clear(ScopeContext.java:108) - Depose object 'druidWebStatServletStarter' ...
[DEBUG] 22:06:43.732 org.nutz.ioc.impl.ScopeContext.clear(ScopeContext.java:108) - Depose object 'druidWebStatFilterStarter' ...
[DEBUG] 22:06:43.732 org.nutz.ioc.impl.ScopeContext.clear(ScopeContext.java:108) - Depose object 'dataSourceStarter' ...
[DEBUG] 22:06:43.732 org.nutz.ioc.impl.ScopeContext.clear(ScopeContext.java:108) - Depose object 'nutDaoStarter' ...
[DEBUG] 22:06:43.732 org.nutz.ioc.impl.ScopeContext.clear(ScopeContext.java:108) - Depose object '$views_velocity' ...
[DEBUG] 22:06:43.732 org.nutz.ioc.impl.ScopeContext.clear(ScopeContext.java:108) - Depose object 'whaleFilterStarter' ...
[DEBUG] 22:06:43.732 org.nutz.ioc.impl.ScopeContext.clear(ScopeContext.java:108) - Depose object 'nutFilterStarter' ...
[DEBUG] 22:06:43.732 org.nutz.ioc.impl.ScopeContext.clear(ScopeContext.java:108) - Depose object 'jettyStarter' ...

【任务】新增配置与使用细节文档

例如:

  1. nutzboot的打包----优先级中
  2. nutzboot在服务器的执行方法----优先级中
  3. nutzboot在服务器的怎样查看控制台日志打印----优先级中
  4. nutzboot各种starter在配置文件中的配置规范(例:jetty在生产环境的配置、dao使用druid连接池的配置使用、各种NoSQL的配置、各种消息队列的配置、多数据源的配置)----优先级高
  5. 怎样编写一个nutzboot的starter----优先级中
  6. nutzboot的快速入门(最好能对比springboot)----优先级低

UndertowStarter应使用Filter和Servlet的实例

按当前的逻辑:

FilterInfo filter = new FilterInfo(webFilter.getName(), webFilter.getFilter().getClass());

注入到undertow的是类,而非webFilterFace提供的对象, 会导致其他starter额外注入的属性没有赋值

应使用InstanceFactory的方式哦

get.nutzboot.io下载项目无法启动

日志信息
[ERROR] 16:45:01.882 org.nutz.boot.NbApp.run(NbApp.java:186) - something happen
java.lang.RuntimeException: Context 'app' had been deposed!
	at org.nutz.lang.Lang.makeThrow(Lang.java:134)
	at org.nutz.ioc.impl.ScopeContext.checkBuffer(ScopeContext.java:39)
	at org.nutz.ioc.impl.ScopeContext.fetch(ScopeContext.java:55)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:180)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:271)
	at org.nutz.boot.AppContext.getBeans(AppContext.java:321)
	at org.nutz.boot.AppContext.stopServers(AppContext.java:305)
	at org.nutz.boot.NbApp._shutdown(NbApp.java:225)
	at org.nutz.boot.NbApp.run(NbApp.java:183)
	at com.yqwoe.MainLauncherKt.main(MainLauncher.kt:9)
import org.nutz.boot.NbApp
import org.nutz.ioc.loader.annotation.IocBean
import org.nutz.mvc.annotation.*;


fun main(args : Array<String>){
    NbApp().run()
}

@IocBean
class MainLauncher{

    @At("/")
    @Ok("->:/index.html")
    fun index(){

    }
}

使用的kotlin创建的MainLauncher
这是什么问题呢

提一个多数据源的想法

今天想了一个多数据源的事情,不知道是否可行
是看了现在的NB的一主多从想出来的,按照一个标准配置来即可
比如我希望注入dbADao、dbBDao、dbCDao那么我的配置文件这样写

# dbADao Master
jdbc.dbADao.url=****
jdbc.dbADao.username=****
jdbc.dbADao.password=****
# dbADao Slaves
jdbc.dbADao.slave.A.url=****
jdbc.dbADao.slave.A.username=****
jdbc.dbADao.slave.A.password=****
jdbc.dbADao.slave.B.url=****
jdbc.dbADao.slave.B.username=****
jdbc.dbADao.slave.B.password=****
########################################
# dbBDao Master
jdbc.dbBDao.url=****
jdbc.dbBDao.username=****
jdbc.dbBDao.password=****
# dbBDao Slaves
jdbc.dbBDao.slave.A.url=****
jdbc.dbBDao.slave.A.username=****
jdbc.dbBDao.slave.A.password=****
jdbc.dbBDao.slave.B.url=****
jdbc.dbBDao.slave.B.username=****
jdbc.dbBDao.slave.B.password=****
########################################
# dbCDao Master
jdbc.dbCDao.url=****
jdbc.dbCDao.username=****
jdbc.dbCDao.password=****
# dbCDao Slaves
jdbc.dbCDao.slave.A.url=****
jdbc.dbCDao.slave.A.username=****
jdbc.dbCDao.slave.A.password=****
jdbc.dbCDao.slave.B.url=****
jdbc.dbCDao.slave.B.username=****
jdbc.dbCDao.slave.B.password=****
########################################

以上方式配置好后,在程序内我们就可以按规则注入使用了,如:

@Inject
protected Dao dbADao;
@Inject
protected Dao dbBDao;
@Inject
protected Dao dbCDao;

@At("/count")
@Ok("json")
public NutMap getCount() {
    int aCount = dbADao.count("table");
    int bCount = dbBDao.count("table");
    int cCount = dbCDao.count("table");
    NutMap result = new NutMap();
    result.put("acount", aCount);
    result.put("bcount", bCount);
    result.put("count", cCount);
    return result;
}

freemarker取值的问题

页面用freemarker取值,${obj.xxx} 首先从request范围找,然后再从session范围找? 现在的是${obj.xxx}只能是从request,如果想从session拿,必须按照freemarker语法${Session.xxx},是不是应该改成前者? 然后请问一下nb项目中的${base}可能会是什么(难道只有空?)

可否提供个j2cache的starter

j2cache好像是osc红薯写的,今天在某群有人说到spring-boot-j2cache-starter了,就想着nb是不是应该也有一个😄

nb在使用nutzboot-starter-tomat与nutzboot-starter-shiro组合时报错

 16:50:08.486 [main] INFO org.nutz.boot.banner.SimpleBannerPrinter - 
 _   _ ______                                      ___   
| \ | || ___ \  ______ ______ ______ ______ ______| \ \  
|  \| || |_/ / |______|______|______|______|______| |\ \ 
| . ` || ___ \  ______ ______ ______ ______ ______| | > >
| |\  || |_/ / |______|______|______|______|______| |/ / 
\_| \_/\____/                                     |_/_/  
  
:: Nutz Boot ::   (2.1.0)
16:50:08.730 [main] DEBUG org.nutz.resource.Scans - Locations count=80 time use 213ms
16:50:08.744 [main] DEBUG org.nutz.resource.Scans - Found 1 resource by src( custom/ ) , regex( ^.+[.]properties$ )
16:50:08.744 [main] DEBUG org.nutz.ioc.impl.PropertiesProxy - load properties from jar:file:/E:/dev/apache-maven-3.5.2/resp/org/nutz/nutzboot-core/2.2-SNAPSHOT/nutzboot-core-2.2-SNAPSHOT.jar!/custom/emtry.properties
16:50:08.746 [main] DEBUG org.nutz.boot.config.impl.PropertiesConfigureLoader - load E:\idea_workspace\LuliChat\target\classes\application.properties
16:50:08.872 [main] DEBUG org.nutz.resource.Scans - Found 5 resource by src( ioc/ ) , regex( ^(.+[.])(js|json)$ )
16:50:08.875 [main] DEBUG org.nutz.ioc.loader.json.JsonLoader - loading [emtry.json]
16:50:08.877 [main] DEBUG org.nutz.ioc.loader.json.JsonLoader - loading [conf.js]
16:50:08.881 [main] DEBUG org.nutz.ioc.loader.json.JsonLoader - loading [dao.js]
16:50:08.884 [main] DEBUG org.nutz.ioc.loader.json.JsonLoader - loading [ehcache.js]
16:50:08.885 [main] DEBUG org.nutz.ioc.loader.json.JsonLoader - loading [upload.js]
16:50:08.892 [main] DEBUG org.nutz.ioc.loader.json.JsonLoader - Loaded 11 bean define from path=[ioc/] --> [uploadTextFileContext, dao, uploadFileContext, fileSqlManager, tmpFilePool, conf, txtUpload, imageUpload, siteConf, dataSource, cacheManager]
16:50:09.001 [main] DEBUG org.nutz.castor.Castors - Using 95 castor for Castors
16:50:09.030 [main] DEBUG org.nutz.ioc.aop.SimpleAopMaker - Load AopConfigure for anno=org.nutz.aop.interceptor.async.Async by type=org.nutz.aop.interceptor.async.AsyncAopIocLoader
16:50:09.050 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -  > scan 'com.dd'
16:50:09.126 [main] DEBUG org.nutz.resource.Scans - Found 49 resource by src( com/dd/ ) , regex( ^.+[.]class$ )
16:50:09.199 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'uploadModule                            ' - com.dd.controller.UploadModule
16:50:09.220 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'userController                          ' - com.dd.controller.UserController
16:50:09.244 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'chatMessageDao                          ' - com.dd.dao.impl.ChatMessageDaoImpl
16:50:09.245 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'userDao                                 ' - com.dd.dao.impl.UserDaoImpl
16:50:09.250 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'mainLauncher                            ' - com.dd.MainLauncher
16:50:09.291 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'accepter                                ' - com.dd.socket.Accepter
16:50:09.309 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'delFriendMessageHandler                 ' - com.dd.socket.handler.DelFriendMessageHandler
16:50:09.309 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'groupMessageHandler                     ' - com.dd.socket.handler.GroupMessageHandler
16:50:09.313 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'joinGroupMessageHandler                 ' - com.dd.socket.handler.JoinGroupMessageHandler
16:50:09.314 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'loginMessageHandler                     ' - com.dd.socket.handler.LoginMessageHandler
16:50:09.315 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'oldMessageHandler                       ' - com.dd.socket.handler.OldMessageHandler
16:50:09.316 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'outGroupMessageHandler                  ' - com.dd.socket.handler.OutGroupMessageHandler
16:50:09.316 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'p2PMessageHandler                       ' - com.dd.socket.handler.P2PMessageHandler
16:50:09.317 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'reqMessageHandler                       ' - com.dd.socket.handler.ReqMessageHandler
16:50:09.318 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'socketServer                            ' - com.dd.socket.SocketServer
16:50:09.319 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -  > scan 'org.nutz.boot.starter'
16:50:09.323 [main] DEBUG org.nutz.resource.Scans - Found 26 resource by src( org/nutz/boot/starter/ ) , regex( ^.+[.]class$ )
16:50:09.361 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'tomcatStarter                           ' - org.nutz.boot.starter.tomcat.TomcatStarter
16:50:09.375 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'whaleFilterStarter                      ' - org.nutz.boot.starter.nutz.mvc.WhaleFilterStarter
16:50:09.378 [main] DEBUG org.nutz.ioc.loader.annotation.AnnotationIocLoader - Found @IocBean method : WhaleFilterStarter.createNutFilter(...) define as name=whaleFilter
16:50:09.380 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'nutFilterStarter                        ' - org.nutz.boot.starter.nutz.mvc.NutFilterStarter
16:50:09.382 [main] DEBUG org.nutz.ioc.loader.annotation.AnnotationIocLoader - Found @IocBean method : NutFilterStarter.createNutFilter(...) define as name=nutFilter
16:50:09.390 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'shiroEnvStarter                         ' - org.nutz.boot.starter.shiro.ShiroEnvStarter
16:50:09.395 [main] DEBUG org.nutz.ioc.loader.annotation.AnnotationIocLoader - Found @IocBean method : ShiroEnvStarter.getCacheManager(...) define as name=shiroCacheManager
16:50:09.395 [main] DEBUG org.nutz.ioc.loader.annotation.AnnotationIocLoader - Found @IocBean method : ShiroEnvStarter.createWebEnvironment(...) define as name=shiroWebEnvironment
16:50:09.395 [main] DEBUG org.nutz.ioc.loader.annotation.AnnotationIocLoader - Found @IocBean method : ShiroEnvStarter.createRememberMeManager(...) define as name=shiroRememberMeManager
16:50:09.396 [main] DEBUG org.nutz.ioc.loader.annotation.AnnotationIocLoader - Found @IocBean method : ShiroEnvStarter.getWebSecurityManager(...) define as name=shiroWebSecurityManager
16:50:09.396 [main] DEBUG org.nutz.ioc.loader.annotation.AnnotationIocLoader - Found @IocBean method : ShiroEnvStarter.getWebSessionManager(...) define as name=shiroWebSessionManager
16:50:09.396 [main] DEBUG org.nutz.ioc.loader.annotation.AnnotationIocLoader - Found @IocBean method : ShiroEnvStarter.getShiroLcacheCacheManager(...) define as name=shiroLcacheCacheManager
16:50:09.405 [main] DEBUG org.nutz.ioc.loader.annotation.AnnotationIocLoader - Found @IocBean method : ShiroEnvStarter.getShiroLcacheCacheManager(...) define as name=shiroEhcacheCacheManager
16:50:09.406 [main] DEBUG org.nutz.ioc.loader.annotation.AnnotationIocLoader - Found @IocBean method : ShiroEnvStarter.getRedisLcacheCacheManager(...) define as name=shiroRedisCacheManager
16:50:09.406 [main] DEBUG org.nutz.ioc.loader.annotation.AnnotationIocLoader - Found @IocBean method : ShiroEnvStarter.createShiroEnvironmentLoaderListener(...) define as name=shiroEnvironmentLoaderListener
16:50:09.406 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'shiroFilterStarter                      ' - org.nutz.boot.starter.shiro.ShiroFilterStarter
16:50:09.409 [main] DEBUG org.nutz.ioc.loader.annotation.AnnotationIocLoader - Found @IocBean method : ShiroFilterStarter.createShiroFilter(...) define as name=shiroFilter
16:50:09.409 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add '$views_freekmarker                      ' - org.nutz.boot.starter.freemarker.FreemarkerViewMaker
16:50:09.410 [main] INFO org.nutz.ioc.loader.annotation.AnnotationIocLoader -    > add 'freeMarkerConfigurer                    ' - org.nutz.boot.starter.freemarker.FreeMarkerConfigurer
16:50:09.418 [main] DEBUG org.nutz.boot.NbApp - Found jar:file:/E:/dev/apache-maven-3.5.2/resp/org/nutz/nutzboot-starter-tomcat/2.2-SNAPSHOT/nutzboot-starter-tomcat-2.2-SNAPSHOT.jar!/META-INF/nutz/org.nutz.boot.starter.NbStarter
16:50:09.422 [main] DEBUG org.nutz.boot.NbApp - Found jar:file:/E:/dev/apache-maven-3.5.2/resp/org/nutz/nutzboot-starter-nutz-mvc/2.2-SNAPSHOT/nutzboot-starter-nutz-mvc-2.2-SNAPSHOT.jar!/META-INF/nutz/org.nutz.boot.starter.NbStarter
16:50:09.423 [main] DEBUG org.nutz.boot.NbApp - Found jar:file:/E:/dev/apache-maven-3.5.2/resp/org/nutz/nutzboot-starter-shiro/2.2-SNAPSHOT/nutzboot-starter-shiro-2.2-SNAPSHOT.jar!/META-INF/nutz/org.nutz.boot.starter.NbStarter
16:50:09.423 [main] DEBUG org.nutz.boot.NbApp - Found jar:file:/E:/dev/apache-maven-3.5.2/resp/org/nutz/nutzboot-starter-freemarker/2.2-SNAPSHOT/nutzboot-starter-freemarker-2.2-SNAPSHOT.jar!/META-INF/nutz/org.nutz.boot.starter.NbStarter
16:50:09.436 [main] INFO org.nutz.boot.NbApp - Configure Manual:
|id  |key                                     |required  |Possible Values     |Default   |Description         |                                starters|
|----|----------------------------------------|----------|--------------------|----------|--------------------|----------------------------------------|
|0   |freemarker.suffix                       |no        |                    |.html     |文件后缀                |org.nutz.boot.starter.freemarker.FreemarkerViewMaker|
|1   |shiro.ini.path                          |no        |                    |          |shiro.ini的路径,如果shiro.ini存在,就会使用它,否则走NB的内部逻辑|org.nutz.boot.starter.shiro.ShiroEnvStarter|
|2   |shiro.ini.urls                          |no        |                    |          |urls过滤清单            |org.nutz.boot.starter.shiro.ShiroEnvStarter|
|3   |shiro.session.cache.redis.debug         |no        |                    |false     |session持久化时redisdebug模式|org.nutz.boot.starter.shiro.ShiroEnvStarter|
|4   |shiro.session.cache.redis.mode          |no        |                    |kv        |设置redis缓存的模式        |org.nutz.boot.starter.shiro.ShiroEnvStarter|
|5   |shiro.session.cache.redis.ttl           |no        |                    |-1        |redis缓存的过期时间        |org.nutz.boot.starter.shiro.ShiroEnvStarter|
|6   |shiro.session.cache.type                |no        |                    |memory    |设置使用的缓存类型           |org.nutz.boot.starter.shiro.ShiroEnvStarter|
|7   |shiro.session.cookie.httpOnly           |no        |                    |true      |Cookie是否只读          |org.nutz.boot.starter.shiro.ShiroEnvStarter|
|8   |shiro.session.cookie.maxAge             |no        |                    |946080000 |Cookie的过期时间,单位:毫秒   |org.nutz.boot.starter.shiro.ShiroEnvStarter|
|9   |shiro.session.cookie.name               |no        |                    |sid       |Cookiename         |org.nutz.boot.starter.shiro.ShiroEnvStarter|
|10  |shiro.session.enable                    |no        |                    |true      |是否启用ShiroSession管理 |org.nutz.boot.starter.shiro.ShiroEnvStarter|
|11  |shiro.url.login                         |no        |                    |/user/login|默认登录路径              |org.nutz.boot.starter.shiro.ShiroEnvStarter|
|12  |shiro.url.logout_redirect               |no        |                    |/         |退出登录后的重定向路径         |org.nutz.boot.starter.shiro.ShiroEnvStarter|
|13  |shiro.url.unauth                        |no        |                    |/user/login|访问未授权页面后的重定向路径      |org.nutz.boot.starter.shiro.ShiroEnvStarter|
|14  |tomcat.contextPath                      |no        |                    |          |上下文路径               |org.nutz.boot.starter.tomcat.TomcatStarter|
|15  |tomcat.host                             |no        |                    |0.0.0.0   |监听的ip地址             |org.nutz.boot.starter.tomcat.TomcatStarter|
|16  |tomcat.maxPostSize                      |no        |                    |64 * 1024 * 1024|POST表单最大尺寸          |org.nutz.boot.starter.tomcat.TomcatStarter|
|17  |tomcat.port                             |no        |                    |8080      |监听的端口               |org.nutz.boot.starter.tomcat.TomcatStarter|
|18  |tomcat.staticPath                       |no        |                    |static    |静态文件路径              |org.nutz.boot.starter.tomcat.TomcatStarter|
|19  |web.session.timeout                     |no        |                    |30        |Session空闲时间,单位分钟    |org.nutz.boot.starter.tomcat.TomcatStarter|
16:50:09.455 [main] INFO org.nutz.ioc.impl.NutIoc - ... NutIoc init complete
16:50:09.456 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object 'appContext' to [app] 
16:50:09.456 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object 'conf' to [app] 
16:50:09.456 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object 'nbApp' to [app] 
16:50:09.457 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'tomcatStarter'<class org.nutz.boot.starter.tomcat.TomcatStarter>
16:50:09.458 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get '$aop_async'<interface org.nutz.ioc.aop.config.AopConfigration>
16:50:09.458 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Load definition name=$aop_async
16:50:09.460 [main] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader - Found IocObject($aop_async) in AsyncAopIocLoader@1225197672
16:50:09.460 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Make...'$aop_async'<interface org.nutz.ioc.aop.config.AopConfigration>
16:50:09.540 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object '$aop_async' to [app] 
16:50:09.555 [main] DEBUG org.nutz.ioc.aop.SimpleAopMaker - Load AopConfigure for anno=org.nutz.ioc.aop.Aop by type=org.nutz.ioc.aop.config.impl.AnnotationAopConfigration
16:50:09.555 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Load definition name=tomcatStarter
16:50:09.555 [main] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader - Found IocObject(tomcatStarter) in AnnotationIocLoader(packages=[org.nutz.boot.starter])
16:50:09.555 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Make...'tomcatStarter'<class org.nutz.boot.starter.tomcat.TomcatStarter>
16:50:09.556 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object 'tomcatStarter' to [app] 
16:50:09.556 [main] DEBUG org.nutz.ioc.aop.impl.DefaultMirrorFactory - Load class org.nutz.boot.starter.tomcat.TomcatStarter without AOP
16:50:09.589 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'conf'<class org.nutz.ioc.impl.PropertiesProxy>
16:50:09.590 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'nutFilterStarter'<class org.nutz.boot.starter.nutz.mvc.NutFilterStarter>
16:50:09.591 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Load definition name=nutFilterStarter
16:50:09.591 [main] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader - Found IocObject(nutFilterStarter) in AnnotationIocLoader(packages=[org.nutz.boot.starter])
16:50:09.591 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Make...'nutFilterStarter'<class org.nutz.boot.starter.nutz.mvc.NutFilterStarter>
16:50:09.591 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object 'nutFilterStarter' to [app] 
16:50:09.591 [main] DEBUG org.nutz.ioc.aop.impl.DefaultMirrorFactory - Load class org.nutz.boot.starter.nutz.mvc.NutFilterStarter without AOP
16:50:09.600 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'conf'<class org.nutz.ioc.impl.PropertiesProxy>
16:50:09.600 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'appContext'<class org.nutz.boot.AppContext>
16:50:09.601 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'whaleFilterStarter'<class org.nutz.boot.starter.nutz.mvc.WhaleFilterStarter>
16:50:09.601 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Load definition name=whaleFilterStarter
16:50:09.601 [main] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader - Found IocObject(whaleFilterStarter) in AnnotationIocLoader(packages=[org.nutz.boot.starter])
16:50:09.601 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Make...'whaleFilterStarter'<class org.nutz.boot.starter.nutz.mvc.WhaleFilterStarter>
16:50:09.601 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object 'whaleFilterStarter' to [app] 
16:50:09.601 [main] DEBUG org.nutz.ioc.aop.impl.DefaultMirrorFactory - Load class org.nutz.boot.starter.nutz.mvc.WhaleFilterStarter without AOP
16:50:09.609 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'conf'<class org.nutz.ioc.impl.PropertiesProxy>
16:50:09.610 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'shiroFilterStarter'<class org.nutz.boot.starter.shiro.ShiroFilterStarter>
16:50:09.610 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Load definition name=shiroFilterStarter
16:50:09.610 [main] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader - Found IocObject(shiroFilterStarter) in AnnotationIocLoader(packages=[org.nutz.boot.starter])
16:50:09.610 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Make...'shiroFilterStarter'<class org.nutz.boot.starter.shiro.ShiroFilterStarter>
16:50:09.610 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object 'shiroFilterStarter' to [app] 
16:50:09.610 [main] DEBUG org.nutz.ioc.aop.impl.DefaultMirrorFactory - Load class org.nutz.boot.starter.shiro.ShiroFilterStarter without AOP
16:50:09.618 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'conf'<class org.nutz.ioc.impl.PropertiesProxy>
16:50:09.618 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'shiroEnvStarter'<class org.nutz.boot.starter.shiro.ShiroEnvStarter>
16:50:09.618 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Load definition name=shiroEnvStarter
16:50:09.618 [main] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader - Found IocObject(shiroEnvStarter) in AnnotationIocLoader(packages=[org.nutz.boot.starter])
16:50:09.618 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Make...'shiroEnvStarter'<class org.nutz.boot.starter.shiro.ShiroEnvStarter>
16:50:09.618 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object 'shiroEnvStarter' to [app] 
16:50:09.619 [main] DEBUG org.nutz.ioc.aop.impl.DefaultMirrorFactory - Load class org.nutz.boot.starter.shiro.ShiroEnvStarter without AOP
16:50:09.629 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'conf'<class org.nutz.ioc.impl.PropertiesProxy>
16:50:09.630 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'appContext'<class org.nutz.boot.AppContext>
16:50:09.630 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get '$views_freekmarker'<class org.nutz.boot.starter.freemarker.FreemarkerViewMaker>
16:50:09.630 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Load definition name=$views_freekmarker
16:50:09.630 [main] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader - Found IocObject($views_freekmarker) in AnnotationIocLoader(packages=[org.nutz.boot.starter])
16:50:09.630 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Make...'$views_freekmarker'<class org.nutz.boot.starter.freemarker.FreemarkerViewMaker>
16:50:09.630 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object '$views_freekmarker' to [app] 
16:50:09.630 [main] DEBUG org.nutz.ioc.aop.impl.DefaultMirrorFactory - Load class org.nutz.boot.starter.freemarker.FreemarkerViewMaker without AOP
16:50:09.633 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'conf'<class org.nutz.ioc.impl.PropertiesProxy>
16:50:10.819 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'whaleFilterStarter'<interface org.nutz.boot.starter.WebFilterFace>
16:50:10.819 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'nutFilterStarter'<interface org.nutz.boot.starter.WebFilterFace>
16:50:10.819 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'shiroFilterStarter'<interface org.nutz.boot.starter.WebFilterFace>
16:50:10.917 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'whaleFilter'<class org.nutz.mvc.WhaleFilter>
16:50:10.918 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Load definition name=whaleFilter
16:50:10.918 [main] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader - Found IocObject(whaleFilter) in AnnotationIocLoader(packages=[org.nutz.boot.starter])
16:50:10.918 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Make...'whaleFilter'<class org.nutz.mvc.WhaleFilter>
16:50:10.918 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object 'whaleFilter' to [app] 
16:50:10.920 [main] DEBUG org.nutz.ioc.aop.impl.DefaultMirrorFactory - Load class org.nutz.mvc.WhaleFilter without AOP
16:50:10.921 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'whaleFilterStarter'<>
16:50:10.924 [main] DEBUG org.nutz.boot.starter.tomcat.TomcatStarter - [NutzBoot] add filter name=whale pathSpec=/*
16:50:10.928 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'whaleFilter'<class org.nutz.mvc.WhaleFilter>
16:50:10.929 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'whaleFilter'<class org.nutz.mvc.WhaleFilter>
16:50:10.931 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'shiroFilter'<class org.apache.shiro.web.servlet.ShiroFilter>
16:50:10.932 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Load definition name=shiroFilter
16:50:10.934 [main] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader - Found IocObject(shiroFilter) in AnnotationIocLoader(packages=[org.nutz.boot.starter])
16:50:10.934 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Make...'shiroFilter'<class org.apache.shiro.web.servlet.ShiroFilter>
16:50:10.934 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object 'shiroFilter' to [app] 
16:50:10.936 [main] DEBUG org.nutz.ioc.aop.impl.DefaultMirrorFactory - Load class org.apache.shiro.web.servlet.ShiroFilter without AOP
16:50:10.937 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'shiroFilterStarter'<>
16:50:10.937 [main] DEBUG org.nutz.boot.starter.tomcat.TomcatStarter - [NutzBoot] add filter name=shiro pathSpec=/*
16:50:10.937 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'shiroFilter'<class org.apache.shiro.web.servlet.ShiroFilter>
16:50:10.937 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'shiroFilter'<class org.apache.shiro.web.servlet.ShiroFilter>
16:50:10.938 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'nutFilter'<class org.nutz.mvc.NutFilter>
16:50:10.938 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Load definition name=nutFilter
16:50:10.938 [main] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader - Found IocObject(nutFilter) in AnnotationIocLoader(packages=[org.nutz.boot.starter])
16:50:10.938 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Make...'nutFilter'<class org.nutz.mvc.NutFilter>
16:50:10.938 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object 'nutFilter' to [app] 
16:50:10.940 [main] DEBUG org.nutz.ioc.aop.impl.DefaultMirrorFactory - Load class org.nutz.mvc.NutFilter without AOP
16:50:10.940 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'nutFilterStarter'<>
16:50:10.940 [main] DEBUG org.nutz.boot.starter.tomcat.TomcatStarter - [NutzBoot] add filter name=nutz pathSpec=/*
16:50:10.940 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'nutFilter'<class org.nutz.mvc.NutFilter>
16:50:10.940 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'nutFilter'<class org.nutz.mvc.NutFilter>
16:50:10.948 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'shiroEnvStarter'<interface org.nutz.boot.starter.WebEventListenerFace>
16:50:10.950 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'shiroEnvironmentLoaderListener'<class org.apache.shiro.web.env.EnvironmentLoaderListener>
16:50:10.950 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Load definition name=shiroEnvironmentLoaderListener
16:50:10.950 [main] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader - Found IocObject(shiroEnvironmentLoaderListener) in AnnotationIocLoader(packages=[org.nutz.boot.starter])
16:50:10.950 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Make...'shiroEnvironmentLoaderListener'<class org.apache.shiro.web.env.EnvironmentLoaderListener>
16:50:10.950 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object 'shiroEnvironmentLoaderListener' to [app] 
16:50:10.960 [main] DEBUG org.nutz.ioc.aop.impl.DefaultMirrorFactory - Load class org.apache.shiro.web.env.EnvironmentLoaderListener without AOP
16:50:10.960 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'shiroEnvStarter'<>
16:50:10.961 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'shiroEnvironmentLoaderListener'<class org.apache.shiro.web.env.EnvironmentLoaderListener>
16:50:10.963 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'tomcatStarter'<interface org.nutz.boot.starter.ServerFace>
二月 04, 2018 4:50:11 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["http-nio-8080"]
二月 04, 2018 4:50:11 下午 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
信息: Using a shared selector for servlet write/read
二月 04, 2018 4:50:11 下午 org.apache.catalina.core.StandardService startInternal
信息: Starting service [Tomcat]
二月 04, 2018 4:50:11 下午 org.apache.catalina.core.StandardEngine startInternal
信息: Starting Servlet Engine: Apache Tomcat/8.5.24
16:50:11.910 [0.0.0.0-startStop-1] ERROR org.apache.shiro.web.servlet.AbstractFilter - Unable to start Filter: [No WebEnvironment found: no EnvironmentLoaderListener registered?].
java.lang.IllegalStateException: No WebEnvironment found: no EnvironmentLoaderListener registered?
	at org.apache.shiro.web.util.WebUtils.getRequiredWebEnvironment(WebUtils.java:277)
	at org.apache.shiro.web.servlet.ShiroFilter.init(ShiroFilter.java:73)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.onFilterConfigSet(AbstractShiroFilter.java:152)
	at org.apache.shiro.web.servlet.AbstractFilter.init(AbstractFilter.java:97)
	at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:285)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:112)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4590)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5233)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
二月 04, 2018 4:50:11 下午 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter [shiro]
javax.servlet.ServletException: java.lang.IllegalStateException: No WebEnvironment found: no EnvironmentLoaderListener registered?
	at org.apache.shiro.web.servlet.AbstractFilter.init(AbstractFilter.java:105)
	at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:285)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:112)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4590)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5233)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: No WebEnvironment found: no EnvironmentLoaderListener registered?
	at org.apache.shiro.web.util.WebUtils.getRequiredWebEnvironment(WebUtils.java:277)
	at org.apache.shiro.web.servlet.ShiroFilter.init(ShiroFilter.java:73)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.onFilterConfigSet(AbstractShiroFilter.java:152)
	at org.apache.shiro.web.servlet.AbstractFilter.init(AbstractFilter.java:97)
	... 11 more

16:50:11.915 [0.0.0.0-startStop-1] INFO org.nutz.mvc.NutFilter - NutFilter[nutz] starting ...
16:50:11.922 [0.0.0.0-startStop-1] INFO org.nutz.resource.impl.ErrorResourceLocation - [loc=C:\Users\Administrator\AppData\Local\Temp\tomcat-docbase.6014251627954826009.8080\WEB-INF\classes]not exist
16:50:11.924 [0.0.0.0-startStop-1] DEBUG org.nutz.resource.Scans - Locations count=81 time use 2ms
16:50:11.927 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.config.AbstractNutConfig - Loading by class org.nutz.boot.starter.nutz.mvc.NbMvcLoading
16:50:11.934 [0.0.0.0-startStop-1] INFO org.nutz.mvc.impl.NutLoading - Nutz Version : 1.r.66-SNAPSHOT 
16:50:11.934 [0.0.0.0-startStop-1] INFO org.nutz.mvc.impl.NutLoading - Nutz.Mvc[nutz] is initializing ...
16:50:11.934 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading - Web Container Information:
16:50:11.934 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading -  - Default Charset : UTF-8
16:50:11.935 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading -  - Current . path  : E:\idea_workspace\LuliChat\.
16:50:11.935 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading -  - Java Version    : 1.8.0_151
16:50:11.935 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading -  - File separator  : \
16:50:11.935 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading -  - Timezone        : Asia/Shanghai
16:50:11.935 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading -  - OS              : Windows 10 amd64
16:50:11.935 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading -  - ServerInfo      : Apache Tomcat/8.5.24
16:50:11.935 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading -  - Servlet API     : 3.1
16:50:11.935 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading -  - ContextPath     : 
16:50:11.935 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading -  - context.tempdir : C:\Users\Administrator\AppData\Local\Temp\tomcat.2405039610824828346.8080\work\Tomcat\0.0.0.0\ROOT
16:50:11.935 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading -  - MainModule      : com.dd.MainLauncher
16:50:11.943 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading - >> app.root = C:/Users/Administrator/AppData/Local/Temp/tomcat-docbase.6014251627954826009.8080
16:50:11.949 [0.0.0.0-startStop-1] INFO org.nutz.mvc.impl.NutLoading - Build URL mapping by org.nutz.mvc.impl.UrlMappingImpl ...
16:50:11.950 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading - add ViewMaker from Ioc by name=$views_freekmarker
16:50:11.951 [0.0.0.0-startStop-1] DEBUG org.nutz.ioc.impl.NutIoc - Get '$views_freekmarker'<interface org.nutz.mvc.ViewMaker>
16:50:11.952 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading - @Views(FreemarkerViewMaker.class,DefaultViewMaker.class)
16:50:11.957 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading - @ChainBy(org.nutz.mvc.impl.NutActionChainMaker)
16:50:11.965 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.Loadings - module class location 'file:/E:/idea_workspace/LuliChat/target/classes/'
16:50:11.965 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.Loadings -  > scan 'com.dd'
16:50:12.026 [0.0.0.0-startStop-1] DEBUG org.nutz.resource.Scans - Found 49 resource by src( com/dd/ ) , regex( ^.+[.]class$ )
16:50:12.101 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.Loadings -    >> add 'com.dd.controller.UploadModule'
16:50:12.102 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.Loadings -    >> add 'com.dd.controller.UserController'
16:50:12.202 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading - Use org.nutz.mvc.impl.NutEntryDeterminer as EntryMethodDeterminer
16:50:12.290 [0.0.0.0-startStop-1] INFO org.nutz.mvc.impl.NutActionChainMaker - Optional processor class not found, disabled : org.nutz.plugins.validation.ValidationProcessor
16:50:12.312 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/upload/test'              >> (UploadModule.java:101).test          : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.337 [0.0.0.0-startStop-1] INFO org.nutz.filepool.NutFilePool - Init file-pool by: C:/Users/Administrator/AppData/Local/Temp/tomcat-docbase.6014251627954826009.8080/WEB-INF/tmp [2000]
16:50:12.345 [0.0.0.0-startStop-1] DEBUG org.nutz.filepool.NutFilePool - file-pool.home: 'C:\Users\Administrator\AppData\Local\Temp\tomcat-docbase.6014251627954826009.8080\WEB-INF\tmp'
16:50:12.347 [0.0.0.0-startStop-1] INFO org.nutz.filepool.NutFilePool - file-pool.cursor: 0
16:50:12.355 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/upload/files'             >> (UploadModule.java:82).files          : Object     | @Ok(json ) @Fail(null ) | by 1 Filters | (I:UTF-8/O:UTF-8)
16:50:12.359 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/upload/image'             >> (UploadModule.java:54).image          : Object     | @Ok(json ) @Fail(null ) | by 1 Filters | (I:UTF-8/O:UTF-8)
16:50:12.365 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/getmembers'          >> (UserController.java:407).getMembers  : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.423 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/random'              >> (UserController.java:647).random      : Object     | @Ok(json:{actived:'username|groupname'}) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.431 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/declineapply'        >> (UserController.java:337).declineApply : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.435 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/getuser'             >> (UserController.java:397).getUser     : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.440 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/updatesign'          >> (UserController.java:387).updateSign  : void       | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.444 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/hide'                >> (UserController.java:377).hide        : void       | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.459 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/refusegroup'         >> (UserController.java:601).refuseGroup : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.464 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/getoldmsgs'          >> (UserController.java:437).getOldMsgs  : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.468 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/innergroup'          >> (UserController.java:503).innerGroup  : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.473 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/online'              >> (UserController.java:368).online      : void       | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.476 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/addfridend'          >> (UserController.java:296).addFridend  : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.480 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/separate'            >> (UserController.java:486).separate    : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.482 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/agreegroup'          >> (UserController.java:542).agreeGroup  : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.486 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/unreadmsgcount'      >> (UserController.java:210).unreadMsgCount : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.489 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/getmsg'              >> (UserController.java:229).getMsg      : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.492 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/markread'            >> (UserController.java:243).markRead    : void       | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.495 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/applyfriend'         >> (UserController.java:255).applyFriend : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.511 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/login'               >> (UserController.java:66).login        : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.514 [0.0.0.0-startStop-1] DEBUG org.nutz.ioc.impl.NutIoc - Get 'freeMarkerConfigurer'<class org.nutz.boot.starter.freemarker.FreeMarkerConfigurer>
16:50:12.514 [0.0.0.0-startStop-1] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Load definition name=freeMarkerConfigurer
16:50:12.515 [0.0.0.0-startStop-1] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader - Found IocObject(freeMarkerConfigurer) in AnnotationIocLoader(packages=[org.nutz.boot.starter])
16:50:12.515 [0.0.0.0-startStop-1] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Make...'freeMarkerConfigurer'<class org.nutz.boot.starter.freemarker.FreeMarkerConfigurer>
16:50:12.515 [0.0.0.0-startStop-1] DEBUG org.nutz.ioc.impl.ScopeContext - Save object 'freeMarkerConfigurer' to [app] 
16:50:12.515 [0.0.0.0-startStop-1] DEBUG org.nutz.ioc.aop.impl.DefaultMirrorFactory - Load class org.nutz.boot.starter.freemarker.FreeMarkerConfigurer without AOP
16:50:12.788 [0.0.0.0-startStop-1] DEBUG org.nutz.ioc.impl.NutIoc - Get 'conf'<class org.nutz.ioc.impl.PropertiesProxy>
16:50:12.805 [0.0.0.0-startStop-1] WARN org.nutz.mvc.impl.UrlMappingImpl - Duplicate @At mapping ? path=/user/login
16:50:12.805 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/login'               >> (UserController.java:663).login       : Object     | @Ok(fm:/login) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.812 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/seachuser'           >> (UserController.java:170).seachUser   : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.814 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/seach'               >> (UserController.java:181).seach       : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.821 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/getinitdata'         >> (UserController.java:197).getInitData : String     | @Ok(raw  ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.824 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.UrlMappingImpl -    '/user/registry'            >> (UserController.java:106).registry    : Object     | @Ok(json ) @Fail(null ) | by 0 Filters | (I:UTF-8/O:UTF-8)
16:50:12.826 [0.0.0.0-startStop-1] INFO org.nutz.mvc.impl.NutLoading - Found 26 module methods
16:50:12.826 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutLoading - Localization: org.nutz.mvc.impl.NutMessageLoader('locales/')  dft<>
二月 04, 2018 4:50:12 下午 org.apache.catalina.core.StandardContext startInternal
严重: One or more Filters failed to start. Full details will be found in the appropriate container log file
二月 04, 2018 4:50:12 下午 org.apache.catalina.core.StandardContext startInternal
严重: Context [] startup failed due to previous errors
16:50:12.832 [0.0.0.0-startStop-1] DEBUG org.nutz.resource.Scans - Found 0 resource by src( locales/ ) , regex( ^.+[.]properties$ )
16:50:12.833 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutMessageLoader - Load Messages in 0 resource : [[]]
16:50:12.834 [0.0.0.0-startStop-1] DEBUG org.nutz.mvc.impl.NutMessageLoader - Message Loaded, size = 0
16:50:12.835 [0.0.0.0-startStop-1] INFO org.nutz.mvc.impl.NutLoading - Nutz.Mvc[nutz] is up in 900ms
16:50:12.838 [0.0.0.0-startStop-1] INFO org.nutz.boot.starter.nutz.mvc.NbMvcLoading - Nutz.Mvc[nutz] is deposing ...
16:50:12.838 [0.0.0.0-startStop-1] INFO org.nutz.boot.starter.nutz.mvc.NbMvcLoading - Nutz.Mvc[nutz] is down in 0ms
二月 04, 2018 4:50:12 下午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
警告: The web application [ROOT] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.lang.Object.wait(Native Method)
 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
 com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43)
二月 04, 2018 4:50:12 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-nio-8080"]
16:50:12.902 [main] DEBUG org.nutz.ioc.impl.NutIoc - Get 'mainLauncher'<class com.dd.MainLauncher>
16:50:12.903 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Load definition name=mainLauncher
16:50:12.903 [main] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader - Found IocObject(mainLauncher) in AnnotationIocLoader(packages=[com.dd])
16:50:12.903 [main] DEBUG org.nutz.ioc.impl.NutIoc - 	 >> Make...'mainLauncher'<class com.dd.MainLauncher>
16:50:12.903 [main] DEBUG org.nutz.ioc.impl.ScopeContext - Save object 'mainLauncher' to [app] 
16:50:12.903 [main] DEBUG org.nutz.ioc.aop.impl.DefaultMirrorFactory - Load class com.dd.MainLauncher without AOP
16:50:12.905 [main] INFO org.nutz.boot.NbApp - NB started : 5070ms

将tomat换成jetty就后不会报错

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.