1 2 Previous Next 16 Replies Latest reply: Nov 25, 2013 11:20 AM by Andreas Weiden RSS

    Oracle forms production mode deploy in forms 11g ?

    Hendry Lai

      Dear All

       

      We're new to 11g forms/reports.

      We work on 10g (majorly in EBS) before, we post our forms program (.fmb) to AP server directly and compile to executable (.fmx) , everything work fine.

      When we migration some sub-system to 11g with weblogic , we have no idea if the same deploy method is a workable model.

       

      In web application such as jsp, we use jdev to make an archive (.war or .ear) , and deploy to production base on weblogic.

      But is it possible for forms / reports application to make an archive (include .fmx,  formsweb.cfg, weblogic.xml ...etc) to deploy ?

      We wonder how can we make it and which IDE tools(such as JDeveloper?) is able to help this task ?

       

      In some security rule constraint  we can not post our all fmx to forms_path.

      If we use legacy basic deploy method : post fmb and compile to fmx on a running forms server ,

        server cache cause some abnormal symptoms such as "can not read fmx" or read previous version of fmx.

       

      Thanks for all your help and guide  !

        • 1. Re: Oracle forms production mode deploy in forms 11g ?
          Christian Erlinger

          There is no such thing as an ear or war file for forms. If you want to ship the executables you'd need to create an installer for yourself (see IzPack - Package once. Deploy everywhere. or Inno Setup for example). Of course you know the caveats for doing this (no select * from, no %rowtype and the like in forms,...).

           

          The legacy basic deploy method you mentioned is actually the method oracle recommends. The caching issue is mostly a simple locking issue; just have a look on how many forms runtimes are using your .fmx (or plx, mmx) file. Simply get rid of the locking forms runtimes and you should be good. For example you could build a maintenance into your forms which will shut down your application after x amount of minutes. Or you could simply kill the forms runtimes...however you should give the end users some time to exit the application gracefully before you kill off their forms runtimes

           

          cheers

          • 2. Re: Oracle forms production mode deploy in forms 11g ?
            Hendry Lai

            Hi ChristianErlinger

             

            Thanks for your response.

            Oracle consultant told us it's not a formal (or recommends) way to deploy forms by compile directly in a running AP server.

            So we got confused what is exactly correct way to deploy ....


            On the other hand, if we could deploy a new forms application (such as WLS_FORMS1 to WLS_FORM2)

            We guess maybe this can resolve some strange symptoms, but we don't know if it is a solution.

             

            Thanks ...

            • 3. Re: Oracle forms production mode deploy in forms 11g ?
              Christian Erlinger

              Oracle consultant told us it's not a formal (or recommends) way to deploy forms by compile directly in a running AP server.

              So we got confused what is exactly correct way to deploy ....

              See Metalink note 1052854.1 When it is needed to recompile Oracle Forms ?

              There are plenty of reasons why a recompile is necessary; and as I mentioned before you have to be careful if you compile on one machine and deploy the resulting executables on another machine. There are a lot of things involved starting from database server patches over application design and finishing with forms compiler / runtime settings. It's not impossible (in fact we are doing this since a very long time), but compiling forms on the target platform against the target database *is* the by oracle recommended method. I had several SRs (regarding other problems) open where Oracle suggested this method to overcome some problems.

              I guess your consultant meant it's not wise to do so directly in the working directory of your forms application; I wouldn't do that either, but compile them in a different folder and copy them to the target folder when finished should do the trick.

               

              On the other hand, if we could deploy a new forms application (such as WLS_FORMS1 to WLS_FORM2)

              We guess maybe this can resolve some strange symptoms, but we don't know if it is a solution.

              You don't deploy anything on WLS_FORMS or any other weblogic instance (except you apply an oracle patch and you need to redeploy the forms servlets for any reason, but that's an entire different story). I guess you should take a look at the documentation:

               

              Basics of Deploying Oracle Forms Applications - 11g Release 1 (11.1.1)

               

              cheers

               

              EDIT: and another note Moving Forms Applications From One Platform Or Machine To Another (Doc ID 299938.1)

               

              Message was edited by: ChristianErlinger

              • 4. Re: Oracle forms production mode deploy in forms 11g ?
                Hendry Lai

                Dear ChristianErlinger


                Thanks for your patient and valuable suggestions.


                We expect something new in Forms / Reports 11g while integrating with weblogic as a stronger application middleware,

                  so we consider a better forms/reports deploy method(with version control, seamless swap mechanism..etc) could be applied in weblogic.

                However, it seem no significant change in forms/reports deploy in 11g.

                 

                We are going to migrate from 6i to 11g , one major poor design in our legacy system is that we miss some privilege control in a lot of  forms.

                We just control in the main menu form , so we can not post all of our forms to forms_path in order to prevent user change access form in URL.

                (Currently we use call form builtin majorly, only login form would post in forms_path)

                We can not fully apply  Basics of Deploying Oracle Forms Applications - 11g Release 1 (11.1.1) .

                 

                Anyway, thanks for your suggestion, it's very helpful in for our future implementation.

                • 5. Re: Oracle forms production mode deploy in forms 11g ?
                  Christian Erlinger
                  We expect something new in Forms / Reports 11g while integrating with weblogic as a stronger application middleware,

                    so we consider a better forms/reports deploy method(with version control, seamless swap mechanism..etc) could be applied in weblogic.

                  Well, the source files are still in binary format which makes forms hard (but not impossible) to put under version control.

                  As far as seamless swap mechanism is concerned - you could do that yourself. Simply create another version of your application under a different working directory, and after you are finished switch the working directory of your formsweb config. You'd have to be careful with your forms_path though.

                   

                  As far as weblogic is concerned - you better forget that weblogic is even there, as it plays a minor role. Most work is done by the plain old forms runtimes (ifrun60 has been renamed to frmweb); the visualisation is done by the forms applet on the client. Weblogic simply runs the forms and the listener servlets which are basically there to instanciate the forms runtime and hold up the communication between the forms applet on the client and the forms runtime on the server (why on earth it consumes memory far more then you'd think for that task and the installation is ridiculously bloated as far as weblogic is concerned is subject of another discussion ).

                   

                  cheers

                  • 6. Re: Oracle forms production mode deploy in forms 11g ?
                    CraigB

                    When we migration some sub-system to 11g with weblogic , we have no idea if the same deploy method is a workable model.

                    You deploy Form binaries to 11g the same way you do it with Forms 10g; copy the file to the Application Server and compile an executable (.fmx).  You will need to modify your compile scripts to point to your new Oracle 11g home.

                     

                    Craig...

                    • 7. Re: Oracle forms production mode deploy in forms 11g ?
                      Hendry Lai

                      Hi CraigB

                       

                      Thanks for your information.

                      The root cause is that we wanna use weblogic deploy form application to prevent some user can not execute form or execute previous version form cause by cache.

                       

                      Using 10g deploy method is work, but cache problem still reside (without shutdown service we cannot deploy new version form for emergency transactions)

                       

                      Thanks.~

                      • 8. Re: Oracle forms production mode deploy in forms 11g ?
                        juliojgs

                        You also could fix the real problem with jdapi. It can help you with this and other problems you will have to face migrating from 6i, like the d2kwutil obsolescence, changing all the run_product calls ...

                        With jdapi you could add a security check in pre-form triggers of all your fmbs.

                        • 9. Re: Oracle forms production mode deploy in forms 11g ?
                          CraigB

                          I'm really not sure I understand your concerns.

                          HendryLai wrote:

                           

                          The root cause is that we wanna use weblogic deploy form application to prevent some user can not execute form or execute previous version form cause by cache.

                           

                          Well, a user would not be able to execute a previous version of a form because the form is cached on the client in the form of a .jar file.  At runtime, the client .jar file is compared against the application server and if they don't match the application server pushes a new version of the .jar to the client.

                           

                           

                          Using 10g deploy method is work, but cache problem still reside (without shutdown service we cannot deploy new version form for emergency transactions)

                           

                          We deploy new versions (in our development environment) all the time without shutting down WebLogic.  The only problem we have encountered is if the form being updated is in use at the time a new version is deployed the user's session gets terminated.  This is unfortunate for the user of the form, but it does not prevent deploying a new version - it just means we have to coordinate the deployment so we don't kick anyone off the application.

                           

                          Production deployments follow strict guidelines - even emergencies - and so this rarely happens in our production application.

                           

                          Craig...

                          • 10. Re: Oracle forms production mode deploy in forms 11g ?
                            juliojgs

                            "We just control in the main menu form , so we can not post all of our forms to forms_path in order to prevent user change access form in URL."

                             

                            I think the problem he has is that he is afraid to expose all the fmbs as any user could inject the form parameter in a url to access a module that would not be accesible to that very user if he had come through the application menu, as he check the access in the calling form.

                             

                            I think you can avoid this being careful with your formsweb.cfg file.

                             

                            Also, raising form_trigger_failure in pre-form if calling form is null is a good practice for other forms than menu.

                            • 11. Re: Oracle forms production mode deploy in forms 11g ?
                              CraigB

                              You raise a good point.  Our application is similarly configured.

                               

                              Craig...

                              • 12. Re: Oracle forms production mode deploy in forms 11g ?
                                Hendry Lai

                                Hi juliojgs

                                  Yes, that's why we not put all form module in forms_path, and thanks for your experience sharing.

                                  We do appreciate for your suggestion, that's useful for us !

                                 

                                  Another question is that if we open new form in url with good access control instead of using call_form built-in,

                                  Call_form is very different from opening form in new url (that's new connection).

                                  In form 6i we used to call another form module via form_form built-in.

                                  If we change to open form in new connection, do we need to re-configured connection number ( resource arrange ) ?

                                 

                                  Thanks ~

                                • 13. Re: Oracle forms production mode deploy in forms 11g ?
                                  juliojgs

                                  I'm not following ... I can't imagine why new_form or open_form built-ins would be more secure than call_form, as they have to have access to the fmx they are invoking.

                                  Also, I think web deployment is more secure, as the client doesn't have direct access to the fmx as they have in the client/server 6i configuration.

                                  For example, even the recommended pre-form I sugested is easily hacked. You just have to create your own fmb with a text item and a button. Let's call it "can_opener.fmb" In the button you program a call_form for the form introduced in the text_item, and now you have a way to get in any form that raises form failure if calling form is null. Then you just have to replace one legit fmx by your can_opener, and ... Access granted to any form in your app!!

                                   

                                  On the other hand, with web deployment, you can restrict the entry point of your app setting the form parameter in formsweb.cfg and disallowing the users to choose their own form by adding "form" parameter in the restrictedURLparams blacklist parameter of formsweb.cfg

                                   

                                  So, your formsweb.cfg section woud read:

                                  [myapp]

                                  userid=appcommonuser/thepassword@mydatabase

                                  form=mymenu

                                  restrictedURLparams=pageTitle,HTMLbodyAttrs,HTMLbeforeForm,HTMLafterForm,log,form,userid

                                   

                                   

                                  I suppose there are better security configurations (single sign-on and all that) which I haven't explored as I'm new to forms web, but this is way better than whatever we may have on good old client/server 6i.

                                  • 14. Re: Oracle forms production mode deploy in forms 11g ?
                                    Christian Erlinger
                                    For example, even the recommended pre-form I sugested is easily hacked. You just have to create your own fmb with a text item and a button. Let's call it "can_opener.fmb" In the button you program a call_form for the form introduced in the text_item, and now you have a way to get in any form that raises form failure if calling form is null. Then you just have to replace one legit fmx by your can_opener, and ... Access granted to any form in your app!!

                                     

                                    If your users have access to the file system of your application server so they can place any form they want in the working directory of your application you have a complete different security problem at hand .

                                     

                                    Specifying the main form and adding the form parameter to the restricted params in the formsweb.cfg should be safe enough (if your users are not allowed to overwrite your forms on the application server); however if you don't want your users to access certain data it's only part of the solution.

                                     

                                    Placing certain forms in different directories for the sake of access control sounds like a configuration/administration nightmare to me...

                                     

                                    cheers

                                    1 2 Previous Next