Thursday, April 19, 2012

Load forms without reloading forms services each time

we are migrating our Oracle Forms 10g application to APEX 4.1.



We need to include some Forms into APEX.



We have a PL/SQL function call_form, called from an APEX region, that simply writes the applet to load the form, passing the form name as parameter.



It works, but it always reload Forms services and it takes arround 10s each time, the Oracle Application Server Forms Services logo appears each time :





It is really a pain for users...



I thought it was because it was reloading jar files each time, so I have tried to use cache options when writting the applet (*cache_option*, *cache_archive*, ...) to cache the files in the JVM, without success.



I don't get the applet security warning each time, in the java cache viewer I can see the 4 jar files frmall.jar, frmwebutil.jar, FDialogPJC.jar and jacob.jar.



Here is the content of the Java console when calling a form, and then reloading the page, it seems it loads webutil 2 times :



 RegisterWebUtil - Loading WebUtil Version 10.1.2.3
proxyHost=null
proxyPort=0
connectMode=HTTP, native.
Forms Applet version is : 10.1.2.3
RegisterWebUtil - Loading WebUtil Version 10.1.2.3
proxyHost=null
proxyPort=0
connectMode=HTTP, native.
Forms Applet version is : 10.1.2.3


My JVM is 1.6.0_31.



The call_form procedure :



 procedure call_form(in_form_name in varchar2) is
begin
htp.p('
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase="http://javadl-esd.sun.com/update/1.6.0/jinstall-6-windows-i586.cab" width="0" height="0" hspace="0" vspace="0">
<param name="type" value="application/x-java-applet">
<param name="codebase" value="http://myhost.ch/forms/java">
<param name="code" value="oracle.forms.webutil.common.RegisterWebUtil">
<param name="cache_option" value="Plugin">
<param name="cache_archive" value="frmwebutil.jar,jacob.jar">
<param name="cache_version" value="">
<comment>
<embed src="" pluginspage="https://java.sun.com/javase/downloads/index.jsp"
type="application/x-java-applet"
java_codebase="http://myhost.ch/forms/java"
java_code="oracle.forms.webutil.common.RegisterWebUtil"
cache_option="Plugin"
cache_archive="frmwebutil.jar,jacob.jar"
cache_version=""
width="0"
height="0"
hspace="0"
vspace="0">
</embed>
<noembed>Registration applet definition</noembed>
</comment>
</object>

<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase="http://javadl-esd.sun.com/update/1.6.0/jinstall-6-windows-i586.cab" width="1015" height="745" hspace="0" vspace="0">
<param name="type" value="application/x-java-applet">
<param name="codebase" value="http://geode.cern.ch/forms/java">
<param name="code" value="oracle.forms.engine.Main">
<param name="cache_option" value="Plugin">
<param name="cache_archive" value="frmall.jar,FDialogPJC.jar,frmwebutil.jar,jacob.jar">
<param name="cache_version" value="">
<param name="serverURL" value="http://myhost.ch/forms/lservlet?ifcfs=http://myhost.ch/forms/frmservlet?config=myconfig&form='||in_form_name||'.fmx&acceptLanguage=fr">
<param name="networkRetries" value="0">
<param name="serverArgs" value="escapeParams=true module='||in_form_name||'.fmx userid= sso_userid=%20 sso_formsid=%25OID_FORMSID%25 sso_subDN= sso_usrDN= debug=no host= port= buffer_records=no debug_messages=no array=no obr=no query_only=no quiet=yes render=no record= tracegroup= log= term=">
<param name="separateFrame" value="False">
<param name="splashScreen" value="">
<param name="background" value="">
<param name="lookAndFeel" value="Oracle">
<param name="colorScheme" value="teal">
<param name="serverApp" value="default">
<param name="logo" value="">
<param name="imageBase" value="DocumentBase">
<param name="formsMessageListener" value="">
<param name="recordFileName" value="">
<param name="EndUserMonitoringEnabled" value="">
<param name="EndUserMonitoringURL" value="">
<param name="heartBeat" value="">
<param name="WebUtilLogging" value="off">
<param name="WebUtilLoggingDetail" value="normal">
<param name="WebUtilErrorMode" value="Alert">
<param name="WebUtilDispatchMonitorInterval" value="5">
<param name="WebUtilTrustInternal" value="true">
<param name="WebUtilMaxTransferSize" value="16384">
<comment>
<embed src="" pluginspage="https://java.sun.com/javase/downloads/index.jsp"
type="application/x-java-applet"
java_codebase="http://myhost.ch/forms/java"
java_code="oracle.forms.engine.Main"
cache_option="Plugin"
cache_archive="frmall.jar,FDialogPJC.jar,frmwebutil.jar,jacob.jar"
cache_version=""
width="1015"
height="745"
hspace="0"
vspace=""
serverURL="http://myhost.ch/forms/lservlet?ifcfs=http://myhost.ch/forms/frmservlet?config=myconfig&form='||in_form_name||'.fmx&acceptLanguage=fr"
networkRetries="0"
serverArgs="escapeParams=true module='||in_form_name||'.fmx userid= sso_userid=%20 sso_formsid=%25OID_FORMSID%25 sso_subDN= sso_usrDN= debug=no host= port= buffer_records=no debug_messages=no array=no obr=no query_only=no quiet=yes render=no record= tracegroup= log= term="
separateFrame="False"
splashScreen=""
background=""
lookAndFeel="Oracle"
colorScheme="teal"
serverApp="default"
logo=""
imageBase="DocumentBase"
recordFileName=""
EndUserMonitoringEnabled=""
EndUserMonitoringURL=""
heartBeat=""
WebUtilLogging="off"
WebUtilLoggingDetail="normal"
WebUtilErrormode="Alert"
WebUtilDispatchMonitorInterval="5"
WebUtilTrustInternal="true"
WebUtilMaxTransferSize="16384">
</embed>
<noembed>Forms applet definition</noembed>
</comment>
</object>
');
end;


Have you any idea on how I can prevent that ? Or do you think there is a better way to include Oracle Forms into APEX ?



Any help would be much appreciated.



Thanks.





No comments:

Post a Comment