Forms 12.2.1.4中web.show_document在JPI与JWS下的差异及检测问询
Oracle Forms 12.2.1.4中JPI与JWS的web.show_document行为差异及检测方案
问题1:JWS与JPI使用不同基础URL的原因
这是二者运行机制的本质差异导致的:
- JPI(Java Plugin)作为浏览器插件运行,完全继承Forms Web部署根页面的上下文,默认以
/forms/作为基础URL拼接web.show_document传入的URI。 - JWS(Java Web Start)是独立启动的Java应用,其启动资源(JNLP文件、Forms客户端类库等)均从
/forms/java/目录加载,运行时会默认将该目录作为基础URL的基准路径,因此拼接URI时会带上/forms/java/前缀。
即便表面配置无差异,二者的运行环境上下文完全独立,导致基础URL的默认取值逻辑不同。
问题2:运行时检测JPI/JWS运行方式的方案
get_application_property()确实没有直接提供该属性,但可以通过读取Java系统属性实现检测:
- JWS运行时会存在专属系统属性
javawebstart.version,可在Forms中通过host()函数调用Java代码获取该属性值:DECLARE v_jws_version VARCHAR2(100); BEGIN v_jws_version := host('java.lang.System.getProperty("javawebstart.version")'); IF v_jws_version IS NOT NULL THEN -- 当前为JWS运行模式 ELSE -- 当前为JPI运行模式 END IF; END; - 也可通过检查
user.dir系统属性辅助判断:JWS的user.dir指向Java Web Start的临时缓存目录,而JPI的user.dir与浏览器运行路径相关,二者路径特征差异明显。
内容的提问来源于stack exchange,提问作者realpikolo
相关产品推荐
相关产品推荐

