2018-06-28 17:16
@foam103 要考虑多种因素,例如你的项目中有很多的 html、js、css 文件,而且你希望经常修改这类文件让其立即生效,那么传统部署方式更好,因为避免了打包 jar 的过程,直接上传覆盖掉这类文件即可
如果是比较偏向业务的或者是服务型的应用项目部署,打成 jar 包比较好
个人经验 tomcat 的稳定性比 jetty 要高,当然这个是针对 jetty 8 的经验,或许现在的 Jetty 9 的稳定性已经上来了
jetty 8 这个版本有时候会无故挂掉,而 tomcat 从 6 时代开始就很稳
2018-06-28 16:53
@八级大狂风 项目名称是 context path,这个是另外一个话题了,需要在 html 资源的前方使用 #(CXT) 这样的东东,例如:
src="#(CXT)/front/css/login.css"
再例如:
href="#(CXT)/login"
当然,使用 #(CXT) 之前需要先配置一下:
engine.addSharedObject("CXT", JFinal.me().getContextPath());
注意,context path 这个机制是 java web 规范中给定的,与 jfinal 完全无关
jfinal 是建议所有 context path 设置为 "" 字符串,这样就省去了这些麻烦事
2018-06-28 10:29
jfinal 官网不是这么配置的,因为 jfinal.com 根本就不使用 session,看一下手头的 jfinal club 项目,里面是用数据库实现的 session 共享
弃用 tomcat 或者叫 servlet 规范中的 session ,也就是弃用 getSessionAttr、setSessionAttr、 getSession() 等一切与 session 有关的方法。 然后参考 club 实现一个 session 机制,这个 session 机制可以是保存数据库,也可以是保存到 redis,只要是共享的一个地方存起来就可以了
不用 servlet 中的 session , 由于 http 是无状态的,通常是使用 cookie 或者 token + 签名的方式,一般使用 cookie + https 既方便又安全
2018-06-28 10:23
jfinal 中使用 websocket 有很多资源可以参考:
http://www.jfinal.com/feedback/402
http://www.jfinal.com/share/139
http://git.oschina.net/dreamlu/Easy4JFinal/tree/master/easy-example/src/main/java/net/dreamlu/example/ws
还有一个办法是不使用 JFinal.start() 启动项目,而使用传统的 java web 办法启动项目,例如使用 jetty maven plugin 启动项目,这样就可以将 Jetty 升到最高版本,然后就可以使用 websocket 了
还有一个办法是使用 tomcat 启动项目