首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
jfinal+finereport起冲突
mld2024
2017-12-07 21:07
FineReport嵌到web项目里,需要用到servlet,但是JFinal的web.xml中的filter把servlet都拦截了,导致访问不了ReportServlet,请问怎么解决?
项目:
JFinal
1
评论区
JFinal
2017-12-07 21:12
配置一个 UrlSkipHandler,跳过那些需要 ReportServlet 接管的 url 即可,看一下 com.jfinal.ext.handler 包下的 UrlSkipHandler,可以适当改造,最后在 configHandler 中这样配置:
me.add(new UrlSkipHandler(...));
回复
mld2024
2017-12-12 17:59
感谢波总,已经解决了,现在用的oracle 数据库,请问生成字典文件时出错流关闭是怎么回事。
回复
JFinal
2017-12-12 18:05
@mld2024
可能是 oracle 驱动的问题,建议单步调试一下
回复
mld2024
2017-12-12 18:20
@JFinal
好的,我试一下,谢谢波总
回复
JFinal
2017-12-12 18:23
@mld2024
如果还是不行的话,单独 new 出来那个生成字典文件的生成器,单独写个 main 方法去生成,我怀疑是 MetaBuilder 中读取了一次 meta 信息,在 DirctionaryGenerator 中再去读的时候 oracle 主动关闭了流,这个在其它数据库中是可以的
回复
JFinal
2017-12-12 18:24
@mld2024
oracle 就是这么喜欢自己搞一套规则,为兼容性造成困扰
回复
mld2024
2017-12-19 08:43
@JFinal
感谢波总,配置了一个handler,可以了
回复
990021266
2020-11-03 23:30
@JFinal
波总 jfinal + finereport9.0
UndertowServer.create(MainConfig.class)
.configWeb( builder -> {
builder.addServlet("ReportServer", "com.fr.web.ReportServlet");
builder.addServletMapping("ReportServer", "/ReportServer/*");
}).start(); }
出现一个问题,第一次访问ReportServer 报错,
[Thread: XNIO-1 task-1]-[ERROR]-[io.undertow.servlet.api.LoggingExceptionHandler.handleThrowable()]: UT005023: Exception handling request to /ReportServer
java.lang.NullPointerException
at com.fr.fs.FSModule.deleteObsoleteJARs(Unknown Source)
at com.fr.fs.FSModule.compatibleUpgrade(Unknown Source)
at com.fr.fs.FSModule.init(Unknown Source)
at com.fr.fs.FSModule.startFinish(Unknown Source)
at com.fr.report.module.EngineModule.start(Unknown Source)
at com.fr.general.ModuleContext.startModule(Unknown Source)
at com.fr.web.BaseServlet.init(Unknown Source)
at com.fr.web.ReportServlet.init(Unknown Source)
at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117)
at io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:305)
在访问一次就好了,就可以用了,感觉第一次访问,没有加载上servlet,等报错后就加载上了。
请问这是为什么有没有解决方法
如果加上builder.setServletLoadOnStartup("ReportServer", 2);后启动的时候报错,起不来,报错信息一样
回复
JFinal
2020-11-04 09:36
NullPointerException 这个异常,单步调试一下,定位是哪个对象为 null 引起的
回复
990021266
2020-11-09 20:49
@JFinal
波总,只有在第一次进入finereport的时候报错,在请求一次就好了,由于finereport是商业,没法看到代码,单步调试,没有发现问题,现在头绪有点茫然了。
我是定义了一个Handlers,里面加入判断用户登录没有。用UrlSkipHandler也是报错。还望波总指点
回复
JFinal
2020-11-09 21:26
@990021266
如果实在找不到原因,可以事先用程序触发一次请求,让异常先抛出来。然后在用户真正请求到来的时候就没有问题了
回复
发送
我要反馈
热门反馈
扫码入社
me.add(new UrlSkipHandler(...));