faq Oracle9i Application Server Release 1
Forms Services
Technical FAQ
September 2001


Forms Services


Platform Support Issues

Single Sign-on

Integration with Oracle Portal

Forms Services

What is the difference between the Forms Server and Forms Services?

Forms Services 6i and Forms Server 6i are the same. Forms Services is the new name for Forms Server within Oracle9i Application Server.
The Forms Server standalone is not orderable anymore.

What is the difference for Internet Deployment between the Forms Listener and the Forms Listener Servlet?

The Forms Listener is a process running on a specific port on the server machine. Because the Forms Listener manages the initial connections from the Forms client, the machine where the Forms Listener process is running and the port on which the Forms Listener is listening must be exposed through the firewall for HTTP and HTTPS traffic. When the connection between the client and the Forms Runtime process is established, the client and the runtime process requires that the connection be persistent. To achieve this persistent connection through firewalls and proxies Oracle requires that firewalls and proxies be HTTP1.1 compliant.

The Forms Listener Servlet is a Java servlet running in a servlet engine. The Forms Listener Servlet improves upon the functionality of the Forms Listener. In the Forms Listener architecture the Web server routes the client requests for the Forms Listener Servlet directly to the servlet instance. Because the web server acts like the end point for the client, the other server machines and ports are no longer exposed to the firewall. No protocol restrictions and no extra processes to manage! This solution is the one recommended for deploying Forms on Internet.

Do I still need to download JInitiator on the client to run a Forms application?

JInitiator is a Java Virtual Machine (JVM) that plugs into either Netscape Communicator or Microsoft Internet Explorer to provide an alternative JVM to that which those browsers provide.

Depending on the client platform the browser is running, we are supporting the following JVMs:

  • Windows32
    • Oracle JInitiator (with Netscape and Internet Explorer)
    • Internet Explorer 5.x native JVM
  • Macintosh
    • Apple MRJ 2.2.3 (with Internet Explorer 5.0)
  • Solaris
    • Sun JDK and Java plug-in

For more information on the level of certification and possible restrictions, please refer to the "Client Platform Support" statement of direction available on OTN ().

What is the difference between the Forms Servlet and the Forms Listener Servlet?

The Forms Servlet is in charge of dynamically generating the HTML page containing the necessary Forms Client information and is in charge of communicating with the Load Balancer server for the Forms load balancing.

The Forms Listener Servlet is the new architecture for Internet deployment. The Forms Listener Servlet replaces the Forms Listener functionality when you deploy over the Internet.

What is the difference between the Forms CGI and the Forms Servlet?

The Forms CGI and the Forms Servlet have the following similarities:

  • Generate the HTML tags needed to start a Forms application according to the client browser used
  • Communicate with the Load Balancer server to determine the least loaded host and perform load balancing

The differences between the CGI and the servlet are the following:

  • The servlet performs better than the CGI
  • The servlet leverages Oracle 9iAS infrastructure (mod_jserv and Apache Jserv)
  • The servlet must be run under a servlet enabled application server such as Oracle 9iAS .

Both deployment methods are supported.

Can I deploy my Forms application over the Internet through firewalls and proxies?

Yes. With the new standard architecture, the Forms Listener servlet (a connection from the client to the HTTP Listener) Forms Services supports a wide range of firewalls and proxy servers. For more information, read the white paper Oracle Forms Developer Release 6i Patch 6: Forms Listener Servlet for Deployment of Forms on the Internet available on OTN ().

When will the Forms Listener servlet use HTTP 1.1 requests to the webserver, and when will it use HTTP 1.0 requests?

The Forms Listener servlet will always make HTTP 1.1 requests if the webserver and any intervening proxies, support this protocol level. The servlet will drop down to using HTTP 1.0 if webserver or one of the proxies can only support that level of the protocol.

How can I manage and monitor Forms Services activity remotely?

Forms Services is integrated with Oracle Enterprise Manager (OEM) to allow the administration and the monitoring of Forms Listeners, Load Balancer clients, and Load Balancer Servers. From the OEM console, you can remotely create, start, stop, or monitor these processes and even create jobs to restart them automatically in case of a failure. The Forms Listener Servlet shipped in Oracle 9iAS v1 does not support this feature. OEM support for Forms Listener Servlet will be provided in a later release of Oracle 9iAS.

How do I run my Forms Services applications in several different languages on the same machine?

When Using the Forms Listener Servlet :

From Forms 6i patch 5 and higher, it is possible to define multiple aliases for the Forms Listener Servlet in the ZONES.PROPERTIES file.  Each of these aliases can be passed a configuration file defining custom environment variables for that particular instance of the servlet. In this way you can set up various aliases for different languages and have the NLS_LANG set accordingly in each of the configuration files.

Refer to the white paper Oracle9iAS Forms Services: Forms6i Patch 5: Forms Listener Servlet for Deployment of Forms on the Internet for details on how to set this up.

When Using the Forms Listener:

When you start a Forms Server Listener, the environment in force will be passed on to any runtime engines that the listener spawns. Consequently, if you start a listener with a particular NLS setting in force, all connections to the port that the listener is servicing will use that NLS setting.

To configure an application server to run in multiple languages, start one Forms Listener for each language and have each one listen on a different port. Then you can create HTML files for each language, specifying the relevant port.

On Windows NT, when an environment variable such as NLS_LANG is defined in the registry, it is global to all applications; however, the registry settings for these variables can be overridden in a command line shell, using the SET command prior to invoking a given Forms Listener from the same shell.

To override the values in the registry for individual instances of the Forms Server Listener, create a batch file for starting the server with a local version of the NLS_LANG parameter.

For example:

  @echo off
  REM set up Port 9002 to be the French users' point of entry
  ifsrv60 -listen port=9002 log=c:\logs\french_connection.log

How can I best measure the memory requirements if my application is on the middle tier?

It is tempting to use operating system tools such as Task manager on Windows or ps on UNIX to provide a figure for memory consumption, based on the amount of memory shown to be consumed by a single session, and multiplying by the projected population.  However, these utilities give a misleadingly high figure for memory consumption, as they fail to take into account the extensive sharing of memory that takes place between concurrent Forms sessions. 

The only way to test the scalability of an application is to define a realistic usage scenario and simulate the activity of concurrent users by playing back this scenario. When the performance degrades significantly, you have reached the maximum number of users on the machine configuration.  You can then calculate the memory consumption per user accordingly.  Tools, such as Mercury LoadRunner, are available to help simulate such user loads.


Is it possible to call Java classes from the Forms application on the application server side?

Yes.  The Forms Developer gives you the ability to generate the PL/SQL code necessary to call any Java class from a Forms application, using the Java Importer facility.

With the code  generated by this feature, you are able to call compiled Java classes, directly from PL/SQL, in the Forms Services on the middle tier.

Can I base a Forms block on an EJB or BC4J component?

The Java importer gives you the ability to use an Enterprise Java Bean (EJB) or Business Components for Java (BC4J) component as the basis of a Forms Block.  However, we recommend that you do not do this for the following reasons:

  • Calling out to Java from Forms has a small but significant performance implication.  The Java Native Interface (JNI) that is used to call out from the Forms C code to Java does impose a bottleneck on the operation as values and method calls are transferred.  Although this overhead is not noticeable in a simple function call, it will become evident if a Form Block is based on Java in this way.  The normal functionality of the block requires many calls back and forth to the datasource and in this case the delay imposed by the JNI bridge, on each call, will result in noticeably slower performance than that for a block based directly on a table, view or PL/SQL stored procedure.
  • Whenever a Forms process calls out to Java, it must have a Java Virtual Machine loaded into memory.  This will increase the memory footprint of your application.
  • Using a foreign data source in this way is a complex task in terms of hooking the Java Code up to the Forms transactional triggers. The maintanance burden is also high if changes have to be made, as both the PL/SQL interfaces and the Java code itself may need to be changed.
  • An EJB or BC4J component will create it's own JDBC connnection to the database and not re-use the existing Forms connection, doubling the user load on the database.

When running a form on the Web, can I use OLE to talk to programs such as MS Word or Excel?

Yes.  OLE integration works for external OLE servers invoked using OLE2.CREATE_OBJ.  The OLE server you are invoking must be available on the middle tier machine where the Forms Services resides.  Consequently the middle tier machine must be a Windows NT or Windows 2000 machine.  Embedded OLE containers and ActiveX (OCX) controls are not supported when running on the Web.

I currently have a client-server application that uses an embedded ActiveX control to communicate with an external device.  How can I maintain this functionality when I deploy the application on the Web?

Assuming that the device in question (for example, a Scanner) is attached to each client machine, rather than the server, you will use a Pluggable Java Component (PJC) to extend the capabilities of the Forms Java Client and allow it to talk to the hardware in question.  JDeveloper 3.2 provides a Wizard to help you build such pluggable Java Components.

How can I upload a file from a browser client to my middle tier?

You can either use a conventional Web upload to do this, or you can use a JavaBean plugged into the Forms Java Client.  An example of this is available on OTN ()

I want to write a JavaBean for use as a pluggable component for the Forms Java Client.  What version of the Java Development Kit (JDK) should I use?

Pluggable Java components need to be compiled with 1.1 of the JDK.  Oracle will be supporting later releases of the JDK in the near future.

When running a Form on the Web where do commands such as HOST and TEXT_IO execute?

In Web-deployed Forms these commands and built-ins execute on the middle tier.  To execute the commands on the client browser machine, use a JavaBean.

In a similar way User Exits and ORA_FFI code all act on the middle tier and not on the browser client.

Can I use the functions in the D2KWUTIL library when my Forms Services are running on NT?

No. We don't support the use of D2KWUTIL in the middle tier. Many of the functions in the library require access to Window Handles, which will not work in the Web deployment scenario.  While some functions, such as WIN_API_ENVIRONMENT.GET_COMPUTER_NAME(), do work, they return information about the application server machine, not the client. Some functions, such as the bitwise operations, continue to function without a problem.

I want to call Reports after deploying my Forms to the Web. Can I use Run_Product?

Yes, you can continue to use Run_Product. However, this is not the most scalable solution as each Forms user could end up with a dedicated Reports runtime engine.  Instead we would recommend that you use Run_Report_Object to call the Reports Server. 

Can I use parameter lists with Run_Report_Object, just like I do with Run_Product?

Yes. The difference though is that Run_Product passes all parameters, even the system parameters, in a parameter list, while Run_Report_Object expects them to be set using Set_Report_Object_Property(...).  System parameters are:

  • destype
  • communication mode
  • execution mode
  • destype
  • desformat
  • the Reports Server name

Platform Support Issues

Can I run Forms Services on Linux?

Yes, Forms Services are available as part of the 9iAS Enterprise Edition on Linux.

Will Forms or JInitiator be supported on Windows 95 once Microsoft has ceased support of the platform?

No.  Once a platform is no longer supported by the operating system vendor we also cease support of products on that platform.

What Win32 Platforms can Forms services be deployed on?

Only Windows NT 4.0 and Windows 2000 are supported as platforms for hosting the Forms Services. 

Browser clients that access Forms applications using JInitiator or native Internet Explorer can be based on any supported Win32 variant:

  • Windows 95 (while supported by Microsoft)
  • Windows 98
  • Windows ME (with patch 6)
  • Windows NT 4.0
  • Windows 2000

Is Forms supported on Windows XP?

No.  Oracle only certifies production operating systems.

Can I run Forms on NT Terminal Server Edition (or Citrix Winframe)?

No. We do not support Forms deployed in this kind of configuration.

How long will Oracle continue to support the client-server deployment of Forms?

Forms 6i is the last release of Forms to support client-server deployment.  All new development efforts are confined to improving Web-deployed Forms. 

However, Oracle recognizes that client-server support is important to many of our customers, and as a result we have chosen to extend the support for Forms 6i, running in client-server mode, beyond it's normal lifetime of 18 months after the release of a newer version.  To this end, client-server deployed Forms 6i will be supported until 2006, with extended  support available until 2008. 

Does Oracle Forms release 6i still support character mode deployment?

Yes, but as for client-server deployment, Forms 6i will be the last version to support character mode.

Forms 6i applications deployed in character mode will be supported until 2006, with extended support available until 2008.

Single Sign-on

Can I use Single Sign-On with Forms Services?

Yes. Starting with patch 5, Forms 6i Services applications can be configured as an external application to the Oracle Login Server. The Login Server is the Oracle unified Single Sign-On (SSO) solution,  mapping the Forms 6i application user to a Single Sign-On user account.

Can I use LDAP to authenticate Forms Services?

Not directly. However, Oracle Login Server is able to authenticate against a LDAP directory and thus a Forms application can take advantage of this in a SSO environment. But you cannot use access control information stored in a LDAP directory with Forms.

Oracle Portal Integration

Can I integrate my Forms Services application as a portlet in Oracle Portal?

Yes.  You have to edit the relevant static or base .html file (if using the CGI or servlet).  In both cases you have to remove the <HTML>,<BODY>, </HTML>, and </BODY> tags.  Using the Portal Developer's Kit (PDK) downloaded from OTN (), you can set up the URL portlet.

This URL portlet takes an application, referenced by a URL, and brings it as a portlet into a portal page.

How can I create a link in Oracle Portal pointing to a Forms Services application?

There are two ways to do this.  First, you can use the Oracle Portal MyFavorites portlet, which is a kind of bookmark portlet, allowing you to publish custom links.

Second, you can define particular links as folders in a Content area and publish them to the portal. The second option may be more suitable as it prevents users from customizing the links.

Top of Page| Copyright and Corporate Info