2019-08-12 21:47

用法应该是对的, 但为何会出这个问题?

单步调试跟踪一下看是啥原因

2019-08-12 21:17

@xiaofeivip_top 因此 inv.invoke() 机制是必不可少的,否则你在拦截器中无法停掉当前调用栈,也就是拦截器无论如何也起不到拦截的作用了

2019-08-12 20:56

这个或许是浏览器的原因,换个浏览器试试

2019-08-12 20:55

这个分享值得收藏,下次有人再问我有关 ajax 跨域的问题,直接给这个链接即可,谢谢分享

2019-08-12 17:57

visualvm 还可以查看更多信息,看哪个线程的哪部分代码占用时间长即可

2019-08-12 10:30

异常内容并未提供多少有价值的信息, jfinal 项目从未碰到过这类异常

spring 项目倒是出现过这种异常,貌似是缺包引起的,或者是多个重复的不同版本的包冲突引起的,而 JDK 吃掉了 ClassNotFound 这个异常,所以就看不出是啥了

参考 spring 的解决办法:
https://yq.aliyun.com/articles/616541
https://www.cnblogs.com/jiangwz/p/9711998.html

2019-08-11 22:34

通过 xshell 连接后,使用 curl 能访问,已经证明应用是没有问题的

通过排除法可知, 问题不可能在应用上, 或许是防火墙的问题

此外,以前有同学在使用腾讯云服务器部署应用的时候也碰到了与你一模一样的问题,通过浏览器的开发者工具,查看响应信息,发现 server 并不是该同学自己的 nginx、tomcat、jetty、undertow,从而确认了是腾迅云自己拦截了请求并且自己响应

最后是通过发起工单,找腾迅云的技术人员解决的,建议你打开浏览器开发者工具查看响应信息中的 server 字段

2019-08-11 17:04

jfinal 自身是开发框架,打包后的 war 部署到 tomcat 下并没有任何 url 可以访问

可以下载首页的 demo 部署来访问

2019-08-11 12:10

刚刚你已经试过了,微信赞赏是自动回调录入信息的

谢谢你的支持

2019-08-10 21:29

@xiaofeivip_top 当你不调用 inv.invoke() 的时候,当前请求到此停掉,相当于你的拦截器拦截了这个请求

2019-08-10 11:03

这两个目录是固定的,想改的话,需要修改 jfinal undertow 源码:
https://gitee.com/jfinal/jfinal-undertow

不建议修改,使用 config、webapp 就挺好

2019-08-09 10:08

反馈错发到了分享频道,稍后将删除,请知悉

2019-08-09 09:07

@lzw0128 是在 activeRecordPlugin.start() 时加载进去的,你可以在 configPlugin 中去掉
me.add(activeRecordPlugin)

然后添加一行:
activeRecordPlugin.start();

相当于是自己手动 start() ,在文档中有过说明:
https://www.jfinal.com/doc/5-15

2019-08-08 21:08

添加 @Before(Tx.class) 以后,jfinal 会生成代理实现 AOP,那么你的那个出错的方法得到的 class 类型就不对了,将 getClazz() 方法内部按下面的办法改进一下,大致如下:
getClazz() {
Class c = getClass();
if (c.getSimpleName().indexOf("$$Enhancer") != -1) {
c = getSuperclass();
}
Type t = c.getGenericSuperclass();
// 后面的代码不变

大致的意思是,先获取一次 getClass() 看这个类是不是 jfinal 生成的代理类,如果类名中包含 "$$Enhancer" 则是生成的代理

如果确实是代理,则调用一次 getSuperclass() 获取其父类,至此的流程就对上了你以前的代码了

记得搞定后回来反馈一下

2019-08-08 17:51

@liucanghai 通过继承 Dialect 扩展很方便,扩展完后一行代码的事:
arp.setDialect(new ...);