引言

在 Oracle EBS(E-Business Suite)系统中,Java Web Start(JWS)技术为企业级应用的集成与访问提供了一种高效、安全的解决方案。随着浏览器对 NPAPI 插件的逐步淘汰(如 IE 浏览器的停用),JWS 成为替代传统 Java Applet 的主流选择。本文将深入解析 Oracle EBS 中 Java Web Start 的登录原理、配置流程及实战技巧,帮助开发者快速掌握这一关键技术。

一、Oracle EBS Java Web Start 登录原理

1.1 核心概念

Java Web Start(JWS)是一种基于 Java 技术的应用部署方案,允许用户通过浏览器启动独立的 Java 应用程序,无需手动安装。其核心依赖于 JNLP(Java Network Launch Protocol)文件,该文件定义了应用程序的资源路径、安全策略及启动参数。

在 Oracle EBS 中,JWS 主要用于启动 Forms 应用程序或其他 Java 组件。登录流程涉及以下关键步骤:

  1. JNLP 文件生成:EBS 系统动态生成包含登录参数的 JNLP 文件,例如用户名、密码、职责等。
  2. 安全认证:客户端通过 JNLP 文件中的参数向 EBS 服务器发送认证请求,验证用户身份。
  3. 会话管理:认证成功后,EBS 返回会话令牌(Session Token),客户端使用该令牌进行后续操作。

1.2 技术优势

  • 跨浏览器支持:不依赖浏览器插件,支持 Chrome、Edge、Firefox 等现代浏览器。
  • 自动更新:应用程序资源自动从服务器下载,确保用户始终使用最新版本。
  • 安全沙箱:默认在受限环境中运行,可通过数字签名请求更高权限。

二、Oracle EBS JWS 登录配置流程

2.1 环境准备

  1. EBS 版本要求
    • R12.1.3 及以上版本需应用特定补丁(如 Patch 32902510)以支持 JRE 8 Update 291 及更高版本。
    • R12.2 版本需启用 JWS 功能并配置相关参数(如s_forms_launch_method),有些低版本的需要打一系列补丁来进行实现。
  2. JRE 安装
    • 客户端需安装 JRE 8 或更高版本。
  3. 浏览器兼容性
    • 推荐使用 Google 或 Edge 浏览器,并配置信任站点以避免安全拦截。

2.2 启用 JWS 服务

  1. 配置文件修改
    • 在 EBS 系统中,通过adadmin工具修改CONTEXT_FILE,设置以下参数:

      properties

      s_forms_launch_method=jws
      ICX:Forms Launcher=http://<host>:<port>/forms/frmservlet?config=jws
      
  2. 补丁应用
    • 应用必要的补丁以支持多会话、跨平台兼容性等功能,例如:
      • Patch 28700057:支持 Firefox 在 macOS 上的 JNLP 临时文件配置。
      • Patch 29058008:增强 JWS 对多表单会话的支持。

2.3 下载的jnlp文件

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0"
 xmlns:jfx="http://javafx.com"
  codebase="http://ebs.test.com/OA_JAVA/">
 <information>
 <title>Oracle E-Business Suite R12</title>
 <vendor>Oracle Corporation</vendor>
 <homepage href="http://www.oracle.com"/>
 <description>Oracle Forms Java Webstart</description>
 <description kind="short">Oracle Forms Applet</description>
 </information>
 <security>
 <all-permissions/>
 </security>
 <update check="always" policy="prompt-run"/>
 <resources>
 <!-- Application Resources -->
 <property name="sun.java2d.dpiaware" value="true" />
 <property name="jnlp.secure.parameter.*" value="true" />
 <property name="jnlp.sis.session" value="chrome_0"/>
 <property name="jnlp.delete.jnlp.file" value="true"/>
 <j2se version="1.8+" href="http://www.oracle.com/technetwork/java/javase/downloads/index.html"/>
 <jfx:javafx-runtime version="2.2+"/>
                <jar href="/OA_JAVA/oracle/apps/fnd/jar/fndforms.jar" download="eager" />
                <jar href="/OA_JAVA/oracle/apps/fnd/jar/fndformsi18n.jar" download="eager" />
                <jar href="/OA_JAVA/oracle/apps/fnd/jar/fndewt.jar" download="eager" />
                <jar href="/OA_JAVA/oracle/apps/fnd/jar/fndswing.jar" download="eager" />
                <jar href="/OA_JAVA/oracle/apps/fnd/jar/fndbalishare.jar" download="eager" />
                <jar href="/OA_JAVA/oracle/apps/fnd/jar/fndaol.jar" download="eager" />
                <jar href="/OA_JAVA/oracle/apps/fnd/jar/fndctx.jar" download="eager" />
                <jar href="/OA_JAVA/oracle/apps/fnd/jar/fndutil.jar" download="eager" />
                <jar href="/OA_JAVA/oracle/apps/fnd/jar/fndlist.jar" download="eager" />
                <!-- <jar href="UNCOMMENT,ADD CUSTOM JARS HERE - ONLY ONE JAR PER ENTRY"/> -->
                <!-- <jar href="" download="eager"/> -->
 </resources>
 <applet-desc
 name="Oracle Forms"
 main-class="oracle.apps.fnd.formsClient.jnlp.FndFormsEngine"
 height="1"
 width="1">
        <param name="serverURL" value="/forms/lservlet?ifcfs=/forms/frmservlet?lang=ZHS&#38;colorScheme=OLIVE&#38;serverApp=OracleApplications"/>
        <param name="height" value="600"/>
        <param name="width" value="750"/>
        <param name="registryPath" value="/OA_JAVA/oracle/apps/fnd/formsClient"/>
        <param name="serverApp" value="OracleApplications"/>
        <param name="networkRetries" value="0"/>
        <param name="disableValidateClipboard" value="true"/>
        <param name="serverUserParams" value="NLS_LANG=&#39;SIMPLIFIED CHINESE_AMERICA&#39; FORMS_USER_DATE_FORMAT=&#39;DD-MON-RRRR&#39; FORMS_USER_DATETIME_FORMAT=&#39;DD-MON-RRRR HH24:MI:SS&#39; NLS_DATE_LANGUAGE=&#39;NUMERIC DATE LANGUAGE&#39; NLS_SORT=&#39;BINARY&#39; NLS_NUMERIC_CHARACTERS=&#39;.,&#39;"/>
        <param name="colorScheme" value="OLIVE"/>
        <param name="lookAndFeel" value="oracle"/>
        <param name="digitSubstitution" value="CONTEXT"/>
        <param name="separateFrame" value="false"/>
        <param name="splashScreen" value="oracle/apps/media/splash.gif"/>
        <param name="darkLook" value="true"/>
        <param name="readOnlyBackground" value="automatic"/>
        <param name="background" value="no"/>
        <param name="dontTruncateTabs" value="true"/>
        <param name="imageBase" value="CodeBase"/>
        <param name="networkStats" value="false"/>
        <param name="heartBeat" value="2"/>
        <param name="nlsLang" value="true"/>
        <param name="WebstartRequest" value="true"/>
        <param name="isResizable" value="true"/>
        <param name="clientDPI" value=""/>
        <param name="clientBrowser" value="chrome"/>
        <param name="ORBdisableLocator" value="true"/>
	<param name="clientEncoding" value="UTF-8"/>
        <param name="tabstop" value="4"/>
        <param name="nparam1" value=""/>
        <param name="nparam2" value=""/>
        <param name="nparam3" value=""/>
        <param name="nparam4" value=""/>
   <param name="servlet_agent" value="http://ebs.test.com/OA_HTML"/>
   <param name="gp1" value=""/>
   <param name="gp2" value=""/>
   <param name="gp3" value=""/>
   <param name="gp4" value=""/>
   <param name="gp5" value=""/>
   <param name="gp6" value=""/>
   <param name="gp7" value=""/>
   <param name="gp8" value=""/>
   <param name="gp9" value=""/>
   <param name="gp10" value=""/>
   <param name="gp11" value=""/>
   <param name="gp12" value=""/>
   <param name="gp13" value=""/>
   <param name="gp14" value=""/>
   <param name="gp15" value=""/>
   <param name="http_ticket" value="8ssewwwwwes.."/>
 </applet-desc>
</jnlp>

三、实战案例:Java Web Start 快速登录

3.1 实现生成的jnlp自动打开from

需要在相应的浏览器的注册文件上进行注册;注册AutoOpenAllowedForURLs和AutoOpenFileTypes

如google为例,注册路径为

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\AutoOpenAllowedForURLs

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\AutoOpenFileTypes

脚本如下

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\AutoOpenAllowedForURLs]
"1"="ebs.test.com"
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\AutoOpenFileTypes]
"1"="jnlp"

四、常见问题与解决方案

4.1 安全阻止

问题:自签名 JAR 文件导致应用无法启动。
解决

  1. 在 Java 控制面板中信任证书。
  2. 使用受信任的 CA 证书对 JAR 文件进行签名。

4.2 会话超时

问题:长时间无操作后会话失效。
解决

  1. 调整 EBS 配置文件中的会话超时参数(如ICX:Session Timeout)。
  2. 在应用层定期发送心跳请求以保持会话活跃。

4.3 类加载错误

问题:JNLP 文件无法加载依赖的 JAR 文件。
解决

  1. 检查 JNLP 文件中的codebasejar href路径是否正确。
  2. 确保 JAR 文件存在且网络连接正常。

五、总结与最佳实践

  • 版本兼容性:确保 EBS 版本和 JRE 版本符合官方认证矩阵。
  • 安全合规:使用 HTTPS 和代码签名保护登录数据。
  • 用户体验:通过 JNLP 文件的shortcut标签在桌面创建快捷方式,提升访问效率。

通过本文的实践指南,开发者可快速搭建 Oracle EBS Java Web Start 登录环境,实现高效、安全的跨系统集成。欢迎在评论区交流您的实战经验或问题!

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐