Browse Source

Merge pull request #15889 in DESIGN/design from fbp/feature to fbp/research

* commit '2b7abdaa6b1ed7533eadff816527624425a31e3f':
  REPORT-144167 取数数据中心适配自定义ssl证书
  REPORT-138589 fix: 设计器启动内置的servletContext注册ws
fbp/research
superman 2 months ago
parent
commit
66a9c0000f
  1. 2
      designer-base/src/main/java/com/fr/design/data/tabledata/datacenter/DCTableDataPane.java
  2. 10
      designer-base/src/main/java/com/fr/design/jxbrowser/JxEngine.java
  3. 6
      designer-base/src/main/java/com/fr/design/jxbrowser/JxUIPane.java
  4. 7
      designer-base/src/main/java/com/fr/start/server/DesignEmbedHelper.java

2
designer-base/src/main/java/com/fr/design/data/tabledata/datacenter/DCTableDataPane.java

@ -31,7 +31,7 @@ import static com.fr.design.ui.ModernUIConstants.SCHEME_HEADER;
*/ */
public class DCTableDataPane extends AbstractTableDataPane<DCTableData> { public class DCTableDataPane extends AbstractTableDataPane<DCTableData> {
private static final JxEngine JX_ENGINE = JxEngine.newInstance(false); private static final JxEngine JX_ENGINE = JxEngine.newInstance(true);
private static final String DATA_CENTER = "dc"; private static final String DATA_CENTER = "dc";
private static final String DATA_CENTER_HELPER = "dcHelper"; private static final String DATA_CENTER_HELPER = "dcHelper";

10
designer-base/src/main/java/com/fr/design/jxbrowser/JxEngine.java

@ -51,7 +51,6 @@ public class JxEngine {
EngineOptions.Builder builder = EngineOptions EngineOptions.Builder builder = EngineOptions
.newBuilder(RenderingMode.HARDWARE_ACCELERATED) .newBuilder(RenderingMode.HARDWARE_ACCELERATED)
.addSwitch("--disable-google-traffic") .addSwitch("--disable-google-traffic")
.addSwitch("--disable-web-security")
.addScheme(Scheme.of(ModernUIConstants.EMB_TAG), .addScheme(Scheme.of(ModernUIConstants.EMB_TAG),
new NxInterceptRequestCallback(this::getComponent, this::getParameterMap)); new NxInterceptRequestCallback(this::getComponent, this::getParameterMap));
if (disableWebSecurity) { if (disableWebSecurity) {
@ -144,6 +143,15 @@ public class JxEngine {
return ENGINE.getValue(); return ENGINE.getValue();
} }
/**
* 是否禁用安全属性
* 对客户端来说安全属性可以忽略
*
* @return 是否禁用
*/
public boolean isDisableWebSecurity() {
return disableWebSecurity;
}
/** /**
* 添加XHR请求头 * 添加XHR请求头

6
designer-base/src/main/java/com/fr/design/jxbrowser/JxUIPane.java

@ -13,6 +13,7 @@ import com.fr.stable.collections.combination.Pair;
import com.fr.stable.os.OperatingSystem; import com.fr.stable.os.OperatingSystem;
import com.fr.web.struct.AssembleComponent; import com.fr.web.struct.AssembleComponent;
import com.teamdev.jxbrowser.browser.Browser; import com.teamdev.jxbrowser.browser.Browser;
import com.teamdev.jxbrowser.browser.callback.CertificateErrorCallback;
import com.teamdev.jxbrowser.browser.callback.InjectJsCallback; import com.teamdev.jxbrowser.browser.callback.InjectJsCallback;
import com.teamdev.jxbrowser.event.Observer; import com.teamdev.jxbrowser.event.Observer;
import com.teamdev.jxbrowser.frame.Frame; import com.teamdev.jxbrowser.frame.Frame;
@ -81,6 +82,11 @@ public class JxUIPane<T> extends BasicPane {
} }
initDebugIfNeeded(); initDebugIfNeeded();
browser = jxEngine.getEngine().newBrowser(); browser = jxEngine.getEngine().newBrowser();
if (jxEngine.isDisableWebSecurity()) {
// 忽略证书验证,兼容有些情况下自定义证书与实际域名不匹配的情况。
// 虽然不是个正确的方式,但真有这么用的还是兼容一下
browser.set(CertificateErrorCallback.class, (params, action) -> action.allow());
}
add(BrowserView.newInstance(browser), BorderLayout.CENTER); add(BrowserView.newInstance(browser), BorderLayout.CENTER);
} }

7
designer-base/src/main/java/com/fr/start/server/DesignEmbedHelper.java

@ -7,6 +7,7 @@ import com.fr.design.DesignerEnvManager;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.stable.EncodeConstants; import com.fr.stable.EncodeConstants;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.third.guava.collect.Sets;
import com.fr.third.springframework.web.SpringServletContainerInitializer; import com.fr.third.springframework.web.SpringServletContainerInitializer;
import com.fr.third.springframework.web.context.support.AnnotationConfigWebApplicationContext; import com.fr.third.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
@ -16,7 +17,8 @@ import org.apache.catalina.loader.WebappLoader;
import org.apache.catalina.startup.Tomcat; import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.webresources.StandardRoot; import org.apache.catalina.webresources.StandardRoot;
import org.apache.tomcat.websocket.server.WsSci; import org.apache.tomcat.websocket.server.WsSci;
;import java.io.File;
import java.io.File;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.LinkOption; import java.nio.file.LinkOption;
import java.nio.file.Path; import java.nio.file.Path;
@ -25,6 +27,8 @@ import java.util.HashSet;
import java.util.Properties; import java.util.Properties;
import java.util.Set; import java.util.Set;
;
/** /**
* 内置服务器工具类 * 内置服务器工具类
* *
@ -100,6 +104,7 @@ public class DesignEmbedHelper {
Set<Class<?>> classes = new HashSet<Class<?>>(); Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(EmbedWebApplicationInitializer.class); classes.add(EmbedWebApplicationInitializer.class);
context.addServletContainerInitializer(initializer, classes); context.addServletContainerInitializer(initializer, classes);
context.addServletContainerInitializer(new WsSci(), Sets.newHashSet(WebSocketEndpoint.class));
} }
/** /**

Loading…
Cancel
Save