# jfinal-nat **Repository Path**: sohnny/jfinal-nat ## Basic Information - **Project Name**: jfinal-nat - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 3 - **Created**: 2018-01-12 - **Last Updated**: 2021-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JFINAL-NAT简介 JFINAL-NAT 是基于 jfinal 与 httpclient 实现的内网穿透反向代理插件 备注 : 基于数字证书/权限的反向代理 原理: HTTP头中加入: Cookie: iPlantDirectoryPro=<安全平台认证令牌> # 快速入门 **1. 引入 [jfinalnat.jar](http://47.94.91.75:8080/jfinalnat-1.0.jar) 包, 或引入maven配置** ```xml com.gitee.sohnny jfinalnat 1.1 ``` **2. 新建 reverse_proxy.properties 配置文件 内容如下:** ```txt    ################## HttpClient start ################## maxTotal = 200 defaultMaxPerRoute = 20 localhostRoutePort = 80 maxPerRoute = 50 targetUrl = http://127.0.0.1:8080/testService ################## HttpClient end ################## ################## reverse_proxy start ################## isEnable = false amHost = cert.test.com updateTime = 600 updateFastTime = 1 keyStorePath = c:/test.keystore password = 123456 targetUrl_cross = http://cert.test.com:9000/mapping/test    ################## reverse_proxy end ################### ``` ```txt maxTotal 最大http线程池为 200; defaultMaxPerRoute 默认的路由数为 20; targetUrl 开发时反向代理的目标服务器地址; isEnable 为false时的请求转向地址targetUrl,为true是转向targetUrl_cross amHost 获取token的主机 updateTime 获取token的频率为 600秒 updateFastTime 获取token的最快频率 1秒 keyStorePath 打包好的keystore证书文件 password keystore文件的密码 ``` **3.  对 jfinal 的 JFinalConfig 配置如下:** ```java @Override public void afterJFinalStart() { PoolingHttpClientConfig.init(); System.err.println("httpClient代理配置完毕"); } ``` # 用法 ```java import com.jfinal.core.Controller; import com.jfinalnat.httpclient.annotation.Proxy; import com.jfinalnat.httpclient.sdk.HttpService; public class UserAction extends Controller { @Proxy(uri="/getUser") //代理目标服务器的地址为 (targetUrl_cross/targetUrl) + /getAuth public void test() {}; /** * 主界面 */ public void index() { //没有Proxy注解则不走代理, 直接进入方法体, 在方法体内可通过HttpService.get等方法进行服务接口调用 User user = HttpService.get(User.class, "/getUser"); setAttr("user", user); render("index.html"); } /** * 绑定 */ @Proxy //无参的默认为请求代理服务器的uri, (targetUrl_cross/targetUrl) + uri public void bind() {} ``` # 项目maven依赖 ```xml junit junit 3.8.1 test org.eclipse.jetty jetty-jsp 8.1.8.v20121106 provided com.jfinal jfinal 3.3 provided org.apache.httpcomponents httpclient 4.5.2 provided org.apache.httpcomponents httpmime 4.5.2 provided com.google.code.gson gson 2.8.1 provided log4j log4j 1.2.17 provided org.slf4j slf4j-api 1.7.25 provided org.slf4j slf4j-log4j12 1.7.25 provided jfinalnat org.apache.maven.plugins maven-war-plugin 3.2.0 maven-compiler-plugin 1.8 1.8 UTF-8 src\main\webapp\WEB-INF\lib ``` **JFinal-nat**