2022-03-15 11:00
貌似不需要这么麻烦,把他的这个SystemOutWriter控制台内容收起来就是你想要的了。看看海哥写的启动脚本。function start()
{
# 运行为后台进程,并在控制台输出信息
java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} &
# 运行为后台进程,并且不在控制台输出信息
# nohup java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} >/dev/null 2>&1 &
# 运行为后台进程,并且将信息输出到 output.log 文件
# nohup java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} > output.log &
# 运行为非后台进程,多用于开发阶段,快捷键 ctrl + c 可停止服务
# java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS}
}
2021-05-23 21:04
最近项目需要优化一下性能,原有项目代码写得较为粗放(一直放任程序员自由实现,只要求程序员用Jfinal把功能实现),现在终于要还账了。说回代码,原有代码基于Jfinal,缓存加入了Redis,session共享也基于undertow扩展了一个类实现了,但用redis缓存那块代码太多的重复代码,if 缓存没有else加入缓存之类的代码,看着这样的代码,脑袋嗡嗡响。
因为前期用jboot实现过一个小的程序,发现Jboot现在文档较为完善,找不到或不太懂的,直接看看源码就明了,更重要的是,Jboot对于Jfinal的扩展做得非常好,完全兼容。@海哥 对于Jboot倾注的心血和勤奋从版本更新的频率就能表现,在此真心赞一个。
因此,这次决定直接集成Jboot进来,有如下几个好处:1,完全兼容原有Jfinal项目,除了增加一个启动类implements JbootAppListener,代码几乎0修改;2,jboot版本更新及时,后续再也不用手动去升级jfinal版本了,特别是其它相关依赖包,且集成功能已经比较完善了;3,缓存等组件的使用更便捷,完全干掉原有使用缓存代码的if else之类的,省掉大量的代码,清爽; 后续会逐步把session共享等功能用起来,干掉现有的同类代码就OK了。
目前还在集成过程中。。。
2021-02-26 17:50
@124653847atqq.com 可以自己实现一个RedisSessionManager实现,原代码不用任何修改。启动中增加一名builder.getDeploymentInfo().setSessionManagerFactory(new RedisSessionManagerFactory());即可搞定。
2021-02-26 16:16
1,新建一个SessionManagerFactory实现
public static class YourSessionManagerFactory implements SessionManagerFactory {
@Override
public SessionManager createSessionManager(Deployment deployment) {
return yoursessionManager;
}
}
2,在UndertowServer启动中配置上去.
UndertowServer.create(Xxx.class).configWeb(builder -> {
builder.getDeploymentInfo().setSessionManagerFactory(new YourSessionManagerFactory());
}).start();
3,可能遇到的问题,如果session中保存有对象, request.getSession().getAttribute("xxx")转换时出现
java.lang.ClassCastException
的异常,请看看是否是由于ClassLoader不一致造成。常见如下:
com.jfinal.server.undertow.hotswap.HotSwapClassLoader@xaxx000
sun.misc.Launcher$AppClassLoader@9x9ssdf
简单粗暴的解决办法是关掉undertow开发模式,undertow.devMode=false
2021-02-26 14:21
@flash866 应用A,新建linux用户usera,应用A启动目录为/home/usera/app1,执行/home/usera/app1/start.sh启动应用;应用B,新建linux用户userb,应用A启动目录为/home/userb/app2,执行/home/userb/app2/start.sh启动应用;