2019-11-07 17:22
你这个需求可以通过 undertow 的反向代理来解决,这里是 undertow 官方给出一例子代码:
https://github.com/undertow-io/undertow/blob/master/examples/src/main/java/io/undertow/examples/reverseproxy/ReverseProxyServer.java
ReverseProxyServer.java 这个例子中,注意看第 78 行以及 84 行的代码:
LoadBalancingProxyClient loadBalancer = new LoadBalancingProxyClient();
Undertow reverseProxy = Undertow.builder();
其中 loadBalancer 可以用于配置成接管你自己的项目,其中 reverseProxy 是反向代理
学会了这个用法以后,再参考 jfinal 官网的文档将 jfinal 项目整合进去:
https://www.jfinal.com/doc/1-4
undertow 整合组件无非就是添加 Handler 之类的东东
2019-11-07 16:59
注意看 jfinal 4.7 的 TableMapping.java 代码的第 38 行:
https://gitee.com/jfinal/jfinal/blob/jfinal-4.7/src/main/java/com/jfinal/plugin/activerecord/TableMapping.java
第 38 行的 if 判断在 4.5 版本之中的确是没有的:
https://gitee.com/jfinal/jfinal/blob/jfinal-4.5/src/main/java/com/jfinal/plugin/activerecord/TableMapping.java
这个判断其实是为了让你的代码更加稳固而添加的,因为 Model 只能被映射一次,而你自己的项目中将 BasBrand 映射了多次,这个在 jfinal 4.5 中虽然没有提示错误,但仅仅是最后一次映射有效
检查一下各个数据源的 mapping 代码,去掉那个重复的 BasBrand 映射即可,只保留一个
2019-11-07 16:52
renderToString 方法会将数据与模板结合并渲染成 String 字符串,所以得到的值一定是 String
如果希望实现你的功能,可以参考一下 com.jfinal.kit.ElKit.java 中的代码,可以这么来用:
1:不带参示例
Integer value = ElKit.eval("1 + 2 * 3");
2:带参示例
Kv data = Kv.by("a", 2).set("b", 3);
Integer value = ElKit.eval("1 + a * b", data);
具体的思路是将求值结果存放在一个叫 RETURN_VALUE_KEY 的变量之中,最后再通过 data.get(RETURN_VALUE_KEY) 获取该值
2019-11-07 15:33
@一个程序员 做成双向认证只需要在这个代码里头添加一点点东西:
https://gitee.com/jfinal/jfinal-undertow/blob/master/src/main/java/com/jfinal/server/undertow/ssl/SslBuilder.java
也就是下面这行代码中:
sslContext.init(getKeyManagers(sslConfig), null, null);
第二个参数的 null 改为 TrustManager 即可,而这个 TrustManager 的密钥库的加载方式与之 keyManager 的完全一样,可以重用 loadKeyStore 方法进行加载
你的贴子正文一开始并没有提出详细的需求,建议你将你的方案简单发个分享出来:
http://jfinal.com/share
2019-11-02 17:38
@dzofmine 如果是 JDK 并且环境变量配置正确,那么就可以确定是 resin 的问题
jfinal 更早期的版本在 tomcat 下也有这个问题,原因是 tomcat 启动时无法正确加载 CLASSPATH 环境变量,jfinal 新版本解决了这个问题
使用 me.setToCglibProxyFactory() 就挺好的,多一个 jar 包,但功能是完全没问题的
2019-11-02 16:05
@hb963724769 前半部分是对的,后半部分是错误的,业务层其它方法调用也可以触发拦截器
业务层拦截器的触发简单来说就是两种:
1:在 controller 中通过 @Inject 注入
2: 通过 Aop.get(...) 获取的对象