Enterprise Manager Java App: Server Information

In BBj 13.0 and higher, the Enterprise Manager Java app has been superseded by a new browser Enterprise Manager and Eclipse plug-in. See Enterprise Manager - BBjServices: Servers, Enterprise Manager - BBj Services: Java Settings, Enterprise Manager - BBj Services: Scheduling.

Information Tab

Environment Tab


The [Environment] tab provides access to a variety of settings related to the BBj environment such as location of certain directories, filesystem settings, whether users can break to a console or not, and more. The following table gives a complete list of the settings shown in the image that follows and how BBj uses them:

 

Allow Pipes

If checked, the data servers will allow clients to open pipes through the server in addition to Normal files. Note: Allowing clients to run arbitrary programs on the server machine may be a security issue.

Cache Directory

Directory where BBj should cache programs on disk when memory is running low.

Clear Cache Button

Instructs BBjServices to clear its caches.

Dump Filesystem cause Stack

This is a debug option for determining the cause of a low-level OS error in the filesystem. It will cause the filesystem to log a stack trace for any low-level OS errors that the filesystem gets. BASIS tech support might ask a user to turn this option on if they keep getting !ERROR=3, IO errors, and it is not clear what is causing them. It just puts something in the log file that we can look at to diagnose a low-level OS error.

Dump Heap


Performs a dump of the JVM's current heap to a file with the name: memoryDump_<date>_<time>.hprof. This does not affect the running of applications. BASIS Technical Support uses this information for debugging purposes

Dump JVM Threads

Performs a thread dump of the JVM's currently running threads to standard err. This does not affect the running of applications. BASIS Technical Support uses this information for debugging purposes.

Force JVM Local

Enables local file access if you are not running a filesystem server. This setting has no effect if you are running a filesystem server.

Heartbeat Timeout (ms)

The length of time allowed for a ThinClient to be unresponsive before closing the connection and (optionally) terminating the BBj session.

Notify User On Internal Error

Displays a message when the user encounters an internal BBj error. For more information, see BBjConfig::notifyUserOnInternalError.

PDF Font Directory

Directory that contains the font files available to BBj for generating PDF documents. For example:

 

On Linux: 

/usr/share/fonts

 

On Windows: 

C:/Program Files/Adobe/Acrobat 7.0/Resource/Font

Release Immediately On Lost Connection

Controls whether the Interpreter session should be terminated immediately if the client side of a thin client connection dies unexpectedly.

Reload DB Config

Reloads the config.ini file that contains the configurations for all databases in BBjServices. Use this button to make BBj aware of any manual changes to the file without restarting BBjServices.

Secure NT DS Encrypter

The encryption class to use when establishing a connection to the Secure NT Data server (PRO/5 series)

Single Threaded Interpreters SPROC/Triggers

Normally triggers run in their own BBj Session on their own thread. Single-threaded triggers are a speed enhancement where the trigger code is run in the same thread as BBjFileSystem. Session Sharing means that once a trigger completes, the session is re-used for the next call of the trigger. In BBj 11.0 and higher, these new features default to ON.

Skip Program Cache File

BBjServices maintains a list of programs currently cached in memory. If BBjServices is stopped and restarted, it reloads the programs cached at the time it was stopped. Checking this item causes BBjServices to not reload programs when it is restarted.

Thread Pool Size

Maximum number of simultaneous threads used by the thread pool shared by the SQL engine, Filesystem, and administrative servers. Normally, users do not need to change this setting.

Thin Client JVM Wait Time

Specifies the number of seconds that the JVM continues to run after the last thin client session ends.

Unpin All Programs Button

Unpins all currently pinned programs. See "Pinning Programs" below for more information.

Use Fork on File Creation

When creating or checking file access a file on a UNIX box, the only way to guarantee that the OS ownership and permissions are correctly observed is to fork the process and execute the action as the correct OS user.  However, on a few platforms, notably SunOS, forking the BBjServices process is much too expensive to use and therefore we attempt to emulate the correct behavior instead, which normally works just fine except in some unusual circumstances. We automatically turn off forking on platforms where we know that this is a problem, but we allow users to manually turn off forking on any platform just in case they feel it is necessary.  It is not usually necessary or desirable for the user to turn this off themselves.

Use Ident Verification

If this is selected, BBjServices will use IDENTD in conjunction with RHOSTS for authentication. This option is only valid when User Authentication is not selected.

Use Shared File Access

Enables when the BBj file system uses traditional BBx file locking to access files. Typically, BBj locks files from the outside world when it opens a file. This means that only the BBjServices that is currently accessing the file can access the file until it is finished with the file. Enabling shared file access means that PRO/5 and Visual PRO/5 applications can still access the data files opened in BBj directly. NOTE: Negative impact on performance occurs when enabling this feature.

Use Window Permissions

Uses the users and password in Windows for login authentication. Requires admin privileges for any Windows users.

User Authentication

If selected, users will be prompted to enter a user name and password when a BBj Thin Client or Term Console session is launched. See BBj User Authentication.

UUID Instead of Local IP

When the user is running both BBjServices and the license server locally on a laptop or something that keeps changing IP addresses while sessions are running. Without this option the user will end up using several licenses because of the different IP addresses. It was added for a particular user who had this problem.

Web User

The user that should be used by the Web application that is communicating with this server.

Pinning Programs

When BBj encounters the command "CALL filename", "LOAD filename", "RUN filename", or "START filename" it executes an algorithm to find and load the correct program file. BBj traverses the disks and directories defined by PREFIX and DSKSYN statements in the current configuration. After finding the correct file, BBj checks the program cache to determine whether the program file is already in memory. If the file is in memory, BBj then examines the file on disk to determine whether it has been modified since the file in memory was loaded. In most cases, and especially if the PREFIX list is long, BBj is required to make a number of calls to the filesystem.

This algorithm ensures that the next time the command "CALL filename" with the same filename is encountered:

  • BBj will reload the modified file if some other process has modified the filename.

  • BBj will load a new file if another process has created a new file with the filename that appears 'earlier' in the PREFIX/DSKSYN search path.

If BBjServices is configured to pin previously loaded programs, the standard search algorithm will not be executed. Instead, BBj will continue to use the same file each time it encounters "CALL filename", "RUN filename", "LOAD filename" or "START filename," unless the process has executed CHDIR or SETDRIVE. If either CHDIR or SETDRIVE has been executed, then BBj will re-execute the standard search algorithm the next time it encounters "CALL filename."

It is common practice for BBx developers to create a new file on disk or to modify an existing file anticipating that programs will immediately begin to use the new/modified file. If programs are pinned, then they will not use the new/modified file when the file can be obtained from the program cache.

To make all programs load a new/modified file, use the Enterprise Manager if program pinning is enabled. The [Environment] Tab in the Enterprise Manager contains an "Unpin All Programs" button. This button is only available when 'logged' into BBjServices. Clicking this button causes BBj to execute the standard search algorithm to find the file "filename" the next time BBj encounters the command "CALL filename." After the program is reloaded, it becomes repinned and the standard search algorithm will not be executed in subsequent CALLs to the same program name.

Note: BBjAdminEnvironment::unpinServer() is a way to unpin sessions programmatically.

Servers Tab

BBjServices consists of several different server programs, each one responsible for performing different tasks such as SQL operations, administrative tasks, thin client connections, etc.

em-serverstab.png

 

The following table describes each different type of server available.

Server Type

Displays the type of server (described below). A second or subsequent server is displayed as a "blank" entry under its primary server a seen in the Thin Client Server above.

 

Administration

Manages the BBj Services via the Enterprise Manager.

 

Bridge

Provides access to the Java BBjBridge which enables a Java program to call a BBj program.

 

Filesystem

Provides access to the file system from a BBj Interpreter

 

Interpreter

Provides access to a fat client BBj Interpreter session on the local machine

 

Port Request

Interacts as a local server with the Proxy Manager Server to provide port information about the various servers to a BBj session when it starts.

 

PRO/5 5.0 DS

Enables clients running PRO/5 5.0 and above access to files through the BBj file system using Normal data server syntax. BBx and BBj clients can coexist without running a PRO/5 Data Server as long as the BBx clients use Data Server syntax to open files. Since all file access is taking place through the BBj file system, no file locking conflicts will occur.

 

Proxy Manager

Maintains a list of currently active ThinClientProxyServers running on the local machine and interacts with the Port Request Server to insure a Thin Client BBj session connects correctly.

 

SQL Engine

Provides SQL capabilities to the BBj Interpreter/ODBC/JDBC.

 

Status

Returns an error when two or more BBjServices are running and provides various types of debugging status information.

 

Terminal

Provides a TermConsole BBj Interpreter session under UNIX. Also provides IO interpreter session under UNIX and Windows.

 

Thin Client Proxy

Provides access to Thin Client Servers from a local BBj executable Thin Client Server to local and remote clients.

 

Thin Client

Provides an SSL-secured Thin Client BBj Interpreter session to local and remote clients.

Run

Marks an "x" if that server is running

Port

Shows the port number

Interface

Indicates if it is open to all (0.0.0.0) or only the local machine (i.e. 127.0.0.1)

SSL

Marks an "x" if SSL is enable on that server

Disallow Console

For thin client servers only; sets whether users are able to break from a program to a console prompt and execute arbitrary BBj commands

The User Name and Password options are only visible when the Enterprise Manager is configuring a local machine on a Windows NT/2000/XP machine or when the remote server is a Windows NT/2000/XP machine. These fields allow the user to configure which account BBjServices will use to log on. The user must specify a valid user account and password in the tab. BASIS recommends that this user account is part of the Administrator's group. BBjServices logs on and runs as this user account, which means that it has the same privileges, environment, and access to shared devices (such as printers, drive mappings, and ODBC User DSNs) as the specified user. BBjServices also executes processes as that user on the thin client's behalf.

Standard Configuration Settings

To modify the settings for a particular server, click on the appropriate server from the left hand tree control. If there can be multiple servers of a particular type running at one time, expand the node first to see a list of servers of that type that are currently available for configuration.

All servers listed above* require the same standard 4 settings as the Bridge Server sample shown below.

*Exception: Status Server only requires the Port

Port

Identifies the port on which the server listens for connections.

Bind Address

Sets the IP address of the only machine able to connect to the server. An address of 0.0.0.0 accepts connections from any IP address. A bind address of 127.0.0.1 (localhost) allows server access from that machine only. Consider setting the Filesystem Server bind address 127.0.0.1 to restrict access when the machine is outside of a firewall and network accessibility is not required.

Maximum Clients

Sets the maximum number of client connections sustained simultaneously.

Run Server

Enables the server when BBjServices is running.

Under Normal circumstances, the default settings are acceptable. Some instances when these settings require modification include:

  • A requirement for Secure Sockets Layer (SSL)

  • A port conflict with one of the servers

  • A server needs to be disabled

  • A bind address needs setting (see below)

  • One type of multiple servers need to run

  • To add another server of a particular type, right click on the node corresponding to the type of server to be created and select the Add Server option from the menu.

Additional PRO/5 DS Configuration Settings

In addition to the standard settings, the PRO/5 DS Server requires additional settings pictured below.

The additional PRO/5 DS Server settings are:

SSL

Enables Secure Sockets Layer (SSL) for encrypting the data passed to and from the server.

Prefixes

Provides a list of directories when a requesting a file open. Refer to Using The PREFIX Verb for complete details on the meaning of each prefix. Each item in the list of prefixes is a separate prefix to be examined. To add a new prefix to the list, right click on the list and select Add Prefix. To remove a prefix from the list, right click on the prefix and select the Remove Prefix.

DISKSYN

Lists DSKSYN values for each item equivalent to a single drive specified in the config.bbx file. For more information about the meaning of each entry, refer to PRO/5 Disk Configuration in the documentation. To add a new value, enter the values in the empty line at the bottom of the DISKSYN table. To remove a value, right click on the value and select Remove.

Umask

Sets the UNIX UMASK (file-creating mode mask) of the user and determines the permissions placed on the file when it is reinitialized.

Advisory Locking

Accesses data files using advisory locking.

Mkeyed FID Always 6

Forces the file system to return a type of 6 for all MKEYED derivative files. This setting is used when an application is dependant on the type information about a file returning a type of 6 (original MKEYED type) on data files, but it is using newer MKEYED types such as highly recoverable, 64-bit, etc.

Create Recoverable Files

Creates new files as highly recoverable by default.

Create 64-bit Files

Creates new files as 64-bit files.

Scan All Roots

Applies only to Microsoft Windows machines. If no drive letter is specified, and this option is checked, the file system checks each valid drive (subject to DSKSYN settings) as well as the current drive. For example, if OPEN(1)"/temp/hello.dat" is called, the file system first examines C:/temp/hello.dat, then if unsuccessful it tries A:/temp/hello.dat, then D:/temp/hello.dat, etc.

JVM (Java Virtual Machine) Tab

The [JVM] tab allows the specification of the JVM used for the BBjServices server. On UNIX operating systems, the user specifies the directory that contains the Java executable. On Microsoft Windows operating systems, the user specifies the jvm.dll file used for each of the applications displayed in the list box. On both types of operating systems, the user can also specify any command line arguments necessary such as stack size.

To set the jvm.dll or Java executable file and any command line arguments for an application, Click [Properties]. To reset them to the default setting, click on the "All To Default" button.

When changing the JVM settings, BASIS suggests making most changes to the default settings to affect all applications currently set to use the default settings. This makes future administration much easier. Then make individual changes to the settings of applications only when that application requires settings that differ from the default.

Memory Allocation

Providing command line parameters to Java can influence the amount of memory that the operating system allocates to Java; a portion of which is then made available to BBj.

For more information, see the Advantage magazine article about BBj memory management at www.basis.cloud.


To obtain a detailed listing of Java command line parameters supported by your JVM, run the following command:

java -?

Additionally, the –X options provide users with advanced configuration selections, but they are non-standard and subject to change.


For example, the following options define an initial (-Xms) memory allocation of 192 MB and maximum (-Xmx) memory allocation of 256 MB:

-Xms192m -Xmx256m

For additional information, visit the Sun Java website at java.sun.com.

Classpath Tab

The [Classpath] tab allows the specification of the location(s) of any additional Java resources that will be available to BBj applications. These resources can include third party libraries, JDBC drivers, etc. Using a JDBC driver other than the BBj driver or the Sun JDBC-ODBC Bridge driver requires adding the path to the driver's JAR file on this tab.

Items can be added or removed from the CLASSPATH as desired by simply clicking the [Add] or [Remove] buttons. When adding a new item, a file browse dialog will appear which will allow the selection of the directory or JAR file that is being added to the CLASSPATH.

IMPORTANT: All changes made to the CLASSPATH or JVM require restarting BBjServices before the changes will take effect.

Autorun Tab

Using the [Autorun] tab, the administrator may configure BBj to run a number of programs automatically when BBjServices initially starts. These programs run in the background and therefore a user cannot interact with them.

For each program, the administrator may configure the following parameters:

Config File

The location of a config.bbx file that should be used to configure the environment of the autorun programs.

Working Directory

The default directory that the autorun programs will use.

Run As User

The user account that should be used to run the autorun programs.

Programs

The list of programs that should run when BBjServices starts or is restarted.

In addition to the global settings, each program can have its own set of the above properties so that it can use a different config.bbx file, working directory, or user account.

Performance Tab

The [Performance] tab dialog provides a way to limit the amount of message acknowledgement traffic that goes back and forth between the thin client and the server. Settings are labeled "Production" and "Development." If an application is completely in production and working as expected, all of the options under the Production column should be selected. During development, it may be helpful or necessary to select one or more of the options in the Development column in order to better track messages.

The following table describes each of the settings:

Production Settings

UI Ack Back

Equivalent to executing BBjConfig.suppressUIAckBack(1), which controls whether the Interpreter waits for a response from UI before processing the next program statement.

Printer Ack Back

Equivalent to executing BBjConfig.suppressPrinterAckBack(1), which controls whether the Interpreter waits for a response from UI before processing the next program statement.

Send Message Responses

Equivalent to executing BBjConfig.requireAllSendMsgResponses(0), which controls whether the Interpreter waits for a response from UI before processing the next program statement.

Suppress Errors on Client Objects

When using client objects, if there is an exception that occurs on the client, errors from methods that return void will not be sent to the server.

Use DVK License if Present

A DVK license feature allows a developer to run ClientObject code without receiving a nag message even if their ClientObject jar has not been registered.  This will hide the message that a customer will receive if the application is deployed with a non-registered jar. Before deploying an application to users, it is suggested that developers test their application with Use-DVK-license set to false. (Depending on what the screen looks like, consider substituting 'set to false' with 'unchecked' or 'checked' or whatever is appropriate.)

Recheck Session Classpath

Each new BBj session compares the modification time of each jar file in the session-specific class path (SSCP) to the last known modified time.  If the modification time is different, the BBj session will use a new ClassLoader.  This is convenient for development when the jars in an SSCP change quickly, but slows the startup time of a session.  Because the same class loaded by distinct ClassLoader objects are different, this can also cause confusion when programs share data via namespaces or other means external to BBj.

Pin Programs and Resources

Causes all programs to be pinned. See Pinning Programs below for more information. Pinning should be disabled in Development mode and enabled in Production mode.

q Pin by BBj Session

Pinning of programs occurs on a per BBj Session basis.

Skin Tab

The [Skin] tab provides a means for applying a custom skin to the look of the BBj applications; this sets the skin for the Enterprise Manager only. To set the skin for BBj clients, use the -LF command line option as documented in Running BBj From the Command Line.

None

Select this option if no skin is to be applied.

Theme Pack

Select this option if a theme pack will be specified as the skin to be used by BBj applications. The theme pack file must also be specified if this option is selected.

Individual Files

Select this option if the skin definition is contained in individual files. The location of the files must also be specified in the appropriate text field for the type of these skin files.