Borland®
Shop
Products Downloads Services Support Partners News & Events Company Community
AppCenter
Documentation
Support
 APPCENTER

Frequently Asked Questions

This document provides answers to frequently asked questions about AppCenter. This information also appears in the AppCenter documentation.

FAQ contents

Creating configurations

Can dependencies span across configurations? That is, can Object X in configuration A be dependent on Object Y in configuration B?
Yes. However, while dependencies are enforced, they are not acted upon across configurations. In other words, a particular configuration can view objects outside its own configuration, but can NOT effect objects outside its configuration. If an object in configuration A is dependent upon an object in configuration B, starting configuration A will not start an object in configuration B. Neither can you have dependencies between configuration objects themselves.

I can import VisiBroker objects from the Location Service. How can I edit them?
This is done with the VisiBroker wizard. Select the object in AppCenter and invoke the wizard from the context menu. You can then edit it as you require.

I can import VisiBroker servers that have been registered with the OAD. However, I don't see a wizard to convert such servers to AppCenter control. Are there a few properties I can edit to effect that conversion, or do I use the VisiBroker server wizard?

If you import the server using the OAD browser or wizard, the information essential to the server is copied into AppCenter. You can then use the VisiBroker server update wizard to change the things you want.

Is it possible to have more than one modeled view of an application? For example, can you model the same running application but group it by server type, or by host, and be able to drill down that way?
The problem with this is that at the moment, grouping in AppCenter is more than just a logical way to group things; it has semantic meaning to the rules processing engine. It actually governs what objects get started and when. There is a workaround. You may be able to get some of what you want by putting specific servers onto a number of different cockpits, with each cockpit representing a particular "slice" of the system. Note that there are a number of host centered views, both within a configuration, and across multiple configurations. For example, if you select a computer in the Navigator, then select the Managed Objects tab, you are shown all of the managed objects hosted by that computer.

What is the best way to impose a wait on a group of CORBA servers to start up? After the servers are launched, they create some CORBA objects send the object IOR's to a database interface. They aren't really ready until they have completed all of that activity.
Define an object associated with each server. In each server, don't put that object into the location service until the server has started up completely. When you manage that object in AppCenter, set the ping after death flag so it will ping the object even when it is down. Then make the other objects depend on that associated object being up.

The object will be down to start with and come up after all of the required actions have happened. Then all the dependent objects will start.

Can I include the VisiBroker for C++ orb library in a DLL?
You should not need to do this. Use the DevKit interface to allow a process on any host to communicate with AppCenter and just set BROKER_HOST and BROKER_PORT.

What is the best way to maintain application level state information in AppCenter so that CORBA server components can look it up? For example, suppose that an application has 5 stages: startup, initialization, running, shutting down and cleanup. I want to post a string (or an object) somewhere & allow the servers in the application to query for this state information, perhaps to gauge internal state transitions in the servers.

Create a template with some properties in it. Associate that template with a configuration or an object (as appropriate). Then use the C/CORBA API to set and get the values of the properties.

You could also use some middleware persistence mechanism for doing this sort of thing. If all servers run in JVM's, consider using Javaspaces.

Why don't VisiBroker objects appear below their containing servers in the navigator.
There are two types of containment, only one of which can be represented on the navigator. The type of containment displayed on the navigator indicates containment where an object can only be in an up state when the requisite number of objects that are contained by it are up. VisiBroker objects do not necessarily have this requirement. For example, it may be sufficient that a VisiBroker server be available, not running, for the object that contains it to be considered up. Select the Containment tab to see the objects contained by VisiBroker servers.

I'm having trouble setting a property for an object. I can add it to a template, so why can't I add one to an object in the configuration?
It is not possible to create a new property at the object level. The reason for this is that a property consists of two types of information; data, and metadata. The data is basically the name and value. The metadata includes descriptive text, type information, a number of attribute bits, allowed values, and so on. Metadata can only be stored in templates, while objects themselves only contain data. To solve your problem, create a new template and have the object inherit from it.

Metadata is information that defines the object/type/class. Data is information that defines an instance of that object.

If you add a property to a template later, you can use the Tools|Propagate Template Properties to send the new property to all of the objects that use that template.

Scaling applications

I have created a fault tolerant group, then populated it, but it won't perform a Failover. Why not?
For a failover to be performed, there needs to be a fault tolerant relationship between the objects in the group. This relationship is not created automatically when you create a fault tolerant group and then populate it; only when you turn an existing object into a fault tolerant group. This means that the group will start a backup object if the primary one fails, but does not allow a failover. To allow failover, select the group then, in the Fault Tolerance tab, draw a relationship between the objects. Reload the configuration then perform the failover.

Can you reconfigure a group in real time? For example, if a group has three servers, can I add a fourth server, start it up and then shut down one of the original servers?
Yes, but you first have to execute a "Reload" command on the configuration. This currently has a side effect in that it changes the state of all down servers back to idle. To add a server:

  1. Use the Console to add the server.
  2. Right click on the configuration and select the reload action. This will tell the monitor process that changes have been made to an active configuration and that it should now take note of these changes.
  3. Once the new server is under management (that is, in an idle state), you can shut down server1 and server 4 will start up.

If I associate two event actions with a filter, why won't the second happen until the first is finished?
The action associated with an event should be fairly short-lived, for example a script which sends an e-mail, or takes some sort of corrective action. If you are running something long lived, you should launch as a separate process such as a .bat file and let the original script finish on its own.

Is it possible to have a number of concurrently managed environments on the same host?
The thing to remember about this is that each agent can talk to only one broker on the same machine. You can run multiple brokers (on different ports) and have different agents talk to each of these brokers. It would be a matter of setting BROKER_HOST and BROKER_PORT for each environment.


I have a number of processes that require being started as part of a configuration and that must be run with different user logins. How do I manage this in AppCenter?
You can have multiple agents running on a single host, each running with a different user ID.

How do I facilitate communication between VisiBroker clients and OpenView?
The best way to communicate to OpenView is via a standard protocol called SNMP. There are many SNMP packages available on the market. Any of these packages would allow you to programmatically send SNMP traps (or events if you like) to OpenView. Also, VisiBroker processes can send user defined events to AppCenter using the CAPI or CORBA API, which can then send them on to OpenView as required by setting up an EventAction mechanism in AppCenter. It should be noted however that SNMP does not provide a great deal of security. AppCenter provides a SNMP agent and MIB to allow HP OpenView to see CORBA statistics.

Can a computer with multiple IP cards run as a multiple host?
Yes it can. In order to get the multi IP address setup to work, set the environment variable AM_HOST_NAME to the IP address of the interface you want to use. You can set BROKER_HOST on each machine to the correct IP address as well.
BROKER_HOST can take an IP address as well as a name.
AM_HOST_NAME can take an IP address as well as a name.

For example:
On main machine (with two interfaces 1.1.1.1 and 2.2.2.2) you want to use 1.1.1.1, so set AM_HOST_NAME on that machine to 1.1.1.1 set BROKER_HOST to 1.1.1.1 on that machine then, start the broker, database and agent.
On all other machines set BROKER_HOST to be 1.1.1.1 and set AM_HOST_NAME to the interface they want to use on that machine (if there are two).
AM_HOST_NAME is the IP or host name of the current machine. This is used when the current machine has got more than one host name (or IP address) and you need to specify which one to use. Thus, if an agent was running on a machine that had two IP addresses, then you would have to use AM_HOST_NAME to point to the address that you want AppCenter (in this case, the agent) to use. If the agent is not running on a machine that has two IP addresses then you don't need to set AM_HOST_NAME at all.

If I have a VisiBroker SmartAgent running on a machine with multiple IP cards, how can I ensure that AppCenter can locate its correct address?
When the IP Address the SmartAgent (OSAgent) which is running a multi-homed host can not be accessed, the exception "java.net.ConnectException: Connection refused" may be generated. An example of this is where a host has two addresses, one private and one public

If the private IP address is identified by a Borland Application Server as the default address then both the SmartAgent and the VisiBroker objects will be run on the private IP address. As a result, osfind will return the exception. Consequently, AppCenter will get the exception when the VisiBroker Naming Service browser is run to find the Visibroker objects on their specified port.

The solution is to:

  • Enable the VisiBroker SmartAgent to run on the public IP address.
  • Enable Borland Application Server to run the VisiBroker objects on the public IP address.
  1. Create a file named localaddr in the VBROKER_ADM directory for Borland Application Server. For example
    localaddr
    143.186.136.220 255.255.255.0 143.186.136.255
    where 143.186.136.220 specifies the IP Address to be used by SmartAgent. This causes the SmartAgent to run on the public IP Address.
  2. When starting Borland Application Server, specify the IP Address to be used, using the Java option
    -Dvbroker.se.iiop_tp.host=143.186.136.220
    The full command line for start Borland Application Server would be:
     ias -Dvbroker.agent.port=%OSAGENT_PORT% -Dvbroker.se.iiop_tp.host=143.186.136.220
    where -Dvbroker.agent.port sets to Port to run on.

    The Visibroker objects started by Borland Application Server will now be run on the public IP Address and can be seen using both the AppCenter Naming Service Browser and Location Service Browser.

Why can't I get the agent in an application using the Generic driver working properly?
When you set an object in AppCenter to use a generic driver this is what happens:

  1. You issue a start command on the object and a start command is issued to the appropriate agent.
  2. The agent then forks your driver (or script).
  3. The agent expects you to return some information to it so that it knows that everything is OK or that something has failed.
  4. You send things back to the agent from your generic driver by writing data to standard out.
  5. Things are returned as name value pairs, one per line. There are several hard coded names and then the rest of the names are taken as property keys. The most important thing to send back is a status.
    Every generic driver operation must at least return the status.
    To do this return
    • status,0 - The driver failed to do what is was supposed to do (that is, start, stop, ping)
    • status,1 - The driver worked and the start/stop/ping was successful.
    The word "status" is a hard coded key name.
  6. If you fail, you may want to create an event to explain why, so you can also send back exception,string where string is the reason for the failure. Note that you need to fit the message on a single line per command.


So for a simple generic start driver, if the driver succeeded in starting the object, you might return only status,1. If the start operation failed, then you might return "exception,Start operation failed due to lack of resources" status,0

You can pass back information for setting-up your own template and creating some properties in it.
You can associate that template with your AppCenter object. >From your driver you can now send back values for those properties, by returning "my_property_key_name,value"

If the generic driver expects codes on stdout, then what effect does the stdout redirection parameter in the properties field have?
It is up to the driver to support the properties that you give to it. All drivers support properties that will redirect input and output from the started process. Of course, on some drivers this does not make sense, for example, an object driver (no process involved). If your generic start driver starts something that can have output redirected, then you can pass appropriate properties to your driver and have it redirect output, if necessary. (Use the command line to do this.)
Note: It's not the drivers output that is redirected, it's the process that is being started by the driver.

How does the statistics executable return the statistics for Generic processes?
The statistics driver is handled in exactly the same way as the other drivers. To use it

  1. Create a new template that will hold the statistics you want to collect.
    • Make sure each property you create has property attributes NUMERIC and DYNAMIC set.
    • Give each property a unique KEY name.
    • Usually, people put these statistics properties under the "stats" tab, but you can put them wherever you want.
  2. Attach that template to the appropriate object in AppCenter; one that is using a generic driver.
  3. Make sure the stats executable property is set correctly.
  4. Now the generic driver executable that is to produce statistics should return name/value pairs, one per line, representing the key and the current value for each of the statistics you are collecting.


Example:

A template contains two NUMERIC, DYNAMIC properties with the key names CPU_LOAD and MEMORY_USAGE
Statistics driver should write to stdout the following:

CPU_LOAD,50
MEMORY_USAGE,7600
status,1

The driver must use the key name as the way to tell each property apart.
With the Properties tab open. you can see the properties change in value by looking at the appropriate properties on right side pane of AppCenter. They should update every time new values come in. Once you see that happening, you should now be able to use the cockpit to produce graphs of your statistics.

Remember, if the values in the statistics you are collecting are always increasing (for example, some sort of count) then you set the graph to define a rate of change (per minute, hour, whatever), but if the values are actual figures (for example, a percentage) then the graph should be set to plot the exact amount each time. (Do this via graph properties with the rateOfChangeUnit set to absolute_values.)

How can I make AppCenter automatically start a configuration when an NT machine is switched on?
If you don't stop the configuration when you turn the NT machine off (so AppCenter believes that the configuration should be running), then it will come up as soon as the machine has been turned on and the agent has re-started. This is providing you have the agent as an NT service and you have not changed it from an automatic startup, if

How is a managed object made aware of the existence of a new property so that the object can affect, or be affected by the property?
Properties in AppCenter are not directly seen inside an object or server. Property values could be passed to a server via the command line. Particular properties can be accessed from AppCenter by using the supplied API. Also the values could be used to define environment variables and the server could access those. User properties are normally used to define things like environment variables, define start directories, command line options, and things like that. There is currently no direct interface to send properties to an object.

AppCenter won't recognize changed properties of objects in active configurations. Why not?
This appears to happen when users change things like command line for activation on an object, which has failed to start due to wrong application name/path. The user then causes a reload on the configuration and finds that the object has still not started. The user could then assume that it has failed again due to the command line information not updating and treat it as a bug in the reload operation. In fact this is not the case. The reload does successfully update the information but does not cause objects to start so the object has not actually tried to start.

When changing properties of objects/folders/configurations in active configurations:

  1. You should select Actions|Reload on the configuration for the changes to take effect.
  2. You should then manually affect the object (that is, if you wanted it to start using the new property data, select Actions|Start or Idle and then Start on currently running objects).

I was using the dynamic load balancing service on a VisiBroker group and got a listed error message from the DLB_Service.out file. The message begins
Doing work for/Configurations/DLB/LBgroup
Initializing.....
Uuid of running server[0]=L:95732143130
VisiBrokerObjectId.getMonitorAgent: Exception thrown

and ends Sleeping time...
What is happening?
This exception is informational only. If an exception occurs while attempting to connect to the managed object, the dynamic load balancing function automatically tries again three more times. As long as the statistics are being retrieved from the Managed Object, then this message should be ignored.

How many variables can be used in a property's formula?
In AppCenter 4.0, you can use up to fifty variables in a formula.

AppCenter operations

Is it possible to print various views from the console?
This is not currently possible. The simple workaround is to do a print screen for the view that you want, though this may be difficult to obtain an acceptable resolution with a large configuration.


Does AppCenter mark hosts as Up or Down?
AppCenter doesn't show the state of hosts. It does, however, show the state of agents and managed objects on hosts.


If a client asks AppCenter to shutdown a CORBA server process with PID of 51, for example, and the process with PID=51 has already died and a new process with PID=51 had replaced it, would AppCenter kill the new process just because its PID=51?
AppCenter can handle this on NT machines because it also stores the process creation time. AppCenter compares the PID and process creation times. Both have to match in order for the process to be deemed the same process. This situation does not tend to occur on UNIX machines because the IDs are not re-used particularly quickly.


If the AppCenter agent goes down and then comes back up, how does it restore its internal state? Does the agent take control of the processes managed by it in its previous lifetime?
If the agent goes down and comes back:

  1. AppCenter reads the state of managed objects stored in the repository.
  2. It checks the repository to see if any processes it is supposed to be managing are still running and reconnect to them if they are.
  3. It tells the monitor process about all processes that are not running and lets the monitor decide if action needs to be taken.

Can AppCenter invoke a CORBA method on a managed CORBA process directly, without needing to trigger an event that starts a new process to make this call?
AppCenter provides an IDL interface called the managed object interface which has these functions available:

  • oneway void prepareShutdown();
  • long canShutdown() ;
  • oneway void shutdown();
  • long getStatus();
  • boolean ping();
You can implement your server using this interface. In the AppCenter Visibroker Server Wizard, you can specify that you want to have a "managed object" associated with the server. This allows AppCenter to use these methods ("ping" included).


What is the difference between an OSAGENT_PORT and a BROKER_PORT?
The VisiBroker SmartAgent uses a UDP broadcast protocol to enable objects to dynamically locate each other without prior knowledge of TCP addresses and ports. The one environment variable that is required to achieve this is the location of the UDP broadcast port to listen on. All of the objects that need to communicate with each other need to have the same port number. This is also useful for creating different domains so that different applications don't get in each other's way.

AppCenter uses a naming service that is similar to the SmartAgent which is called the AppCenter Broker. The Broker doesn't use UDP broadcasting, and therefore, each machine needs to be set up with the host and port number of the Broker. There should only be one Broker in each AppCenter installation and all of the machines on the network should be configured to point to it. This is determined by the environment variables BROKER_HOST and BROKER_PORT.


Do I need to have a Performance Monitor Agent for each object in a VisiBroker configuration?
You only need a single Performance Monitor Agent per server. This installs an interceptor that gathers performance statistics for every object in the server. For transient objects, the statistics are aggregated for all instances of that type of transient object.

How many remote agents can be supported by AppCenter? (Or how many agents can a single broker handle at one time)?
There is no physical limit, only a practical one, which depends on the size of the machine you put the repository on.

I have started a process manually. Why doesn't AppCenter show it in an up state?
AppCenter cannot pick up or acquire an object's state when you start the object manually. You have to start it from AppCenter in order to have AppCenter know it's running, and to monitor it. However, in order for AppCenter to be able to start an object, you must be able to start that object manually from a command line. This means that you must make sure that the environment and the command line for the object are correctly defined in AppCenter.


AppCenter isn't showing the correct date and time for events. What can I do to correct this?
The problem could be due to Java using the wrong time zone for your areas. In the AppCenter console, select the File|Preferences|Time Zone option and ensure that you are using the correct time zone for your area.:

Windows timezone user.timezone ID TimeZone ID
GMT Standard Time GMT Africa/Casablanca
Romance Standard Time ECT Europe/Paris
Egypt Standard Time EET Africa/Cairo
Saudi Arabia Standard Time EAT Asia/Riyadh
Iran Standard Time MET Asia/Tehran
Arabian Standard Time NET Asia/Yerevan
West Asia Standard Time PLT Asia/Karachi
India Standard Time IST Asia/Calcutta
Central Asia Standard Time BST Asia/Dacca
Bangkok Standard Time VST Asia/Bangkok
China Standard Time CTT Asia/Shanghai
Tokyo Standard Time JST Asia/Tokyo
Cen. Australia Standard Time ACT Australia/Adelaide
Sydney Standard Time AET Australia/Sydney
Central Pacific Standard Time SST Pacific/Guadalcanal
New Zealand Standard Time NST Pacific/Auckland
Samoa Standard Time MIT Pacific/Apia
Hawaiian Standard Time HST Pacific/Honolulu
Alaskan Standard Time AST America/Anchorage
Pacific Standard Time PST America/Los_Angeles
US Mountain Standard Time MST America/Denver
Central Standard Time CST America/Chicago
Eastern Standard Time EST America/New_York
Atlantic Standard Time PRT America/Halifax
Newfoundland Standard Time CNT America/St_Johns
SA Eastern Standard Time AGT America/Buenos_Aires
E. South America Standard Time BET America/Sao_Paulo
Azores Standard Time CAT Atlantic/Azores

Users can experience problems in setting the correct time for anomalous time zones. The workaround is to go to the TimeZone tab on AppCenter's Preferences dialog and edit the Current GMT Offset field to reflect the local time.

Can I kill AppCenter processes from NT?
Microsoft provides a utility in the Windows NT Resource Kit that allows a user to close processes not normally closeable from the task manager. This utility is called kill.exe and allows the user who started a process or a user who has Administrator privileges to kill a process.

This can be tested by having an AppCenter agent start notepad. The agent is running as a service under a user account who only has User level privileges. By using kill.exe, another user who had Administrator privileges can kill the process by using this utility from the command line.


After running an agent and starting servers on a UNIX machine and doing a Process Status command. I see lots of "defunct processes" listed. What is going on?
This is normal behavior. The AppCenter agent forks a lot of driver processes. Under UNIX these processes, once they die, will remain as defunct processes until "reaped" by the operating system. Thus each ping cycle, it cleans up the obsolete information left since the last ping cycle. The longest a defunct process will remain is one ping cycle.


What is the difference between sleep time and wait time?
Wait time is the amount of time that you can specify between AppCenter issuing a command to an object and verifying that the object is responding to that command. Sleep time is the amount of time that AppCenter sleeps before it retries the command.

Can I modify an active configuration?
When you modify configurations while they are running, remember:

  1. If you modify the properties of a managed object, these will generally not take effect until the configuration is reloaded and the object cycled.
  2. If you add a new managed object to a running configuration, the object may not be manually started. In order to start it, you must execute the reload action on the configuration, which will cause the newly changed configuration to become active. Then you may manage the new objects.

How can I pass input to processes using files?
AppCenter has the ability to pass input to processes via standard-in. However, the exact way in which this input is parsed by the receiving process varies depending on how the parsing routine is written. Specifically, for Entera processes which prompt the user for passwords on startup (such as the Gateway), each separate line of input must be on a separate line, and the file must be in UNIX-style text format rather than DOS-style. (DOS-style text files have two characters to designate end of line, and this confuses the Entera parsing routine.)

How do I run script files under UNIX?
If you are running script files rather than directly running executables under UNIX, you should ensure that your script files do the following:

  • First line should contain "#! /bin/sh"
  • The script should be set with the "executable" attribute
  • The script should launch the target executable using the "exec" command.
  • Each script should launch only a single executable. (It may launch multiple executables, but only the required one will be monitored by AppCenter.)

If I create a Virtual Computer then it seems that the virtual computer is always talking to the first Agent in the list of agents of this computer (usually _SYSTEM). If this agent goes away then I have to redirect the virtual computer directly to the second agent because otherwise this machine become unreachable.
If you connect any object (or virtual computer) to a computer then the agent used for that object is the "default agent" for that computer. Most of the time the default agent will be the first agent you start on that host, but you can change that, just click on the computer, then choose the default agent tab, then right click and choose to change the default agent for the computer, from that point on the newly selected agent will be used by any object that is connected to the computer.

How can AppCenter view my own output files inside the View File dialog and the Cockpit?
To do this you need to create a new property inside a new or existing template.

  1. Create a new template, or open an existing one (note that you cannot use a template supplied with AppCenter).
  2. Create a new property inside the template. The property must be of type "file", and the Dynamic option must be selected.
  3. Link this template to the managed object of choice.
  4. When selecting the view file option on the managed object, you will see the added file inside the drop-down list.
  5. When selecting the managed object inside the cockpit, the added file also exists inside the Selected Log Files property of the cockpit object.

Why is a selected object dragged when I just try to resize the AppCenter window?
If you have Windows Plus installed, and the "how Windows Contents while Dragging" option is selected, resizing the AppCenter window from the left side causes an implicit drag of the current item. To avoid this, either drag from the right/bottom, or disable this option in Windows Plus.

How do I backup the AppCenter repository?
There are two ways of backing up the repository:

  1. Export the entire repository (or parts thereof) to another location. You are advised to use AppCenter's internal format to do this if the data size is greater than a few megabytes.
  2. Copy AppCenter's repos directory to another location. This should only be done when AppCenter is stopped.

Why are my pings failing and my CORBA process marked as dead ?
On the object that is being managed there are 2 properties (under the Fault Tolerance Tab) called AM_PING_SLEEP ('Sleep time between ping retries') and AM_PING_RETRIES ('Number of ping retries'). These are defaulted to 5 and 1 respectively for a total of 5 seconds. Let us shemet t to 20 & 6 respectively (total of 2 minutes). These are fine but they total a time greater than the default ping timeout. What happens is, the driver has been given 20 seconds to do it's work but in order for it (the driver) to determine the object is not there it would need to run for 120 seconds (as it is retrying 6 times) the driver is therefore terminated which generates an exception in the agent. The agent will retry the driver 3 times before making the process dead!

Using statistics

How can I get statistics from AppCenter?
AppCenter allows you to gather and plot performance statistics from existing or new applications. The statistics can be accessed either from the applications themselves, providing that they have been so engineered, or from the middleware that supports applications. The types of applications that directly provide performance statistics are CORBA, Entera, EJB Containers and Borland Application Server. You can also use AppCenter's EMI and Generic driver to collect statistics.

However statistics are gathered, you can use AppCenter's cockpit to display them. A variety of instruments are provided including line graphs, log files and object status. Statistics can also be stored using the history mechanism used in conjunction with the SNMP and dynamic load balancing services.

Default location of the history file output directory
Unless you specify otherwise, the default location for the history file output directory is AppCenter's gyro directory.

How does AppCenter get statistics from CORBA?
AppCenter uses VisiBroker to access statistics from CORBA applications. They are collected with the Monitor Agent (one of which must be included with each CORBA server process) and the Performance Monitor Engine. The Performance Monitor Engine takes a snapshot of statistics from each of the Monitor Agents and aggregates the data for use in a cockpit.

AppCenter can obtain statistics from both Java and VisiBroker C++ applications. Statistics collection may be enabled manually by adding arguments to the command line of the VisiBroker server or automatically by using an AppCenter CORBA wizard to construct the server in an AppCenter configuration.

How does AppCenter get statistics from Entera?
Statistics can be gathered from Entera applications using a technology called EMI (Enterprise Management Interface). This is limited to DCE and Native RPC implementations.

This is possible if your middleware is "instrumented" to provide these statistics. This means that you can plot statistics without recompiling or changing your existing servers.

Entera instrumentation works by replacing a dll/shared library called LibOdeEmi40/OdeEmi40 (depending on the platform. AppCenter supports only AppCenter 4.x) which is part of the Entera runtime, with a new copy of this file, which contains the required instrumentation code.

The installation program installs the instrumented version of this library into the AppCenter/bin directory.

In order to activate EMI for middleware, you will need to ensure that the instrumented version of the Entera EMI library is used by your servers.

Replace the shared library/dll in the middleware runtime with the EMI-enabled version of this file, shipped in the AppCenter bin directory. You will also need to ensure that the shared library/dll is available on the path. Be sure to keep a backup copy of the original library file in case you encounter any problems.

You will also need to ensure that statistics are turned on in your middleware servers.

How can I simulate statistics in a configuration?


You can simulate statistics for the purpose of evaluating AppCenter and seeing how the cockpit can be configured.

Link any managed object to a template called DummyStats, found in the EMI folder. This will create dummy statistics in your object, which will increase by random amounts when the object is running. This works for any type of managed object, including those in "dummy" configurations.

You can also define your own "random" properties in the following way:

  1. Create a new template
  2. Create one or more properties on this template. You can give them any name and label, but ensure that they have a base class of "DummyStat", and type "Numeric".
  3. Connect the template to your managed object.

Then, in order to display the statistics

  1. Start (or restart) the object.
  2. Drag (or copy and paste) the object to the cockpit, and select the Analog, LED or Line graph tool.

Properties of this type are generated by the monitor, and will only be incremented if the object is up. You can therefore use these properties to illustrate failover.

The polling interval property of an instrument does not appear to work. Regardless of the agent polling interval that is set, polling only runs once per minute. How do I change it?
The statistics polling interval is determined by the environment variable AM_STATS_INTERVAL. This can be changed to a new statistics polling interval (demarcated in seconds). If you encounter this problem, you may be running the agent as a console program. When the agent is run as a console program, the property AM_STATS_INTERVAL is also set as an environment variable in the batch file bin\agent.bat in AppCenter's bin directory. By default it is set as AM_STATS_INTERVAL=60 in the batch file (that is, 60 seconds), so check the file agent.bat and overwrite the value there to change it. The agent needs to be restarted for the change to take effect. When the agent starts up in console mode, it writes out the values of the environment variables that it is using to the screen when it first starts up. So when the agent is starting look for a line something like:
agent dict: AM_STATS_INTERVAL = 60
to see the value the agent is actually using for the AM_STATS_INTERVAL. When running the agent as an NT service, the agent.bat file does not apply and AM_STATS_INTERVAL will be read as a system environment variable.

If no environment variable is set the internal default value is 30 seconds. So start off by checking the value the agent displays at start up.

I created a translation table which includes VisiBroker statistics. When I start the SNMP service then the VisiBroker server, the SNMP service doesn't produce statistics. Why not?
You must start the VisiBroker server first. Then you can start the SNMP agent to get the statistics.

Using cockpits


I can now set up all kinds of objects, operators and instruments in a cockpit, in the design tab. But when I change to view tab, I see empty instruments.
There are two requirements for collecting & displaying statistics:

  1. When you use the wizard to define your server you have to say that the server is to gather performance statistics. Then start it.
  2. You have to enable the cockpit (right click on cockpit and select Actions|Enable, so that it will start collecting statistics.



What are the performance metrics that can be accessed to monitor an applications performance?
The type of performance information that is available depends on the type of driver that you are using.
For VisiBroker users, AppCenter gets the performance metrics via the Performance Monitor Agent interceptors. The attributes of server performance that can be collected are

  • Call Latency
  • Marshalling Buffer Size In
  • Marshalling Buffer Size Out
  • Total calls

For Entera users, the statistics that are available are

  • Server In Bytes
  • Server Out Bytes
  • Server Busy Time
  • Server RPC Count
  • Client In Bytes
  • Client Out Bytes
  • Client Busy Time
  • Client RPC Count

For Borland Application Servers and EJB containers, the statistics available are

  • Memory currently used
  • Total memory used
  • Maximum memory used
  • Total maximum memory

For EJBs, the statistics available are

  • Half Completed
  • Half Created
  • Killed
  • Does not exist
  • Passive
  • Pooled
  • Ready
  • Context
  • Unreferenced


For each of these attributes, the following calculations can be
performed

  • Total
  • Maximum
  • Minimum
  • Average

What is the best way to gather performance statistics for long running processes?
We recommend that you set up a group of graphs. For example, a nest of graphs that each contains about 400 points and have a different sample period for different total period, such as:

  • Poll once a day to get about a year of data
  • Poll once every two hours to get about a month of data
  • Poll once every half hour to get about a week of data
  • Poll once every five minutes to get about a day of data

If you drop an object onto the cockpit four times and connect each instance to a separate graph, then you can setup the four graphs such as those above.


Using events and event actions

Can AppCenter integrate with HP OpenView by sending messages to OpenView upon certain events?
This facility is available in AppCenter by using its Event/Action capabilities to send SNMP traps to OpenView.

Why doesn't launching an application from an Event/Action sequence work?
When an AppCenter EventAction executes a command it passes a number of parameters to the command as command line arguments. These include the event id, UUID of object, message string, status and so on.
Change your action to a simple "echo" and you will see all of the parameters. The application may be objecting to all the parameters being passed to it. To run it, put its start command in a batch file and execute the batch file as your AppCenter action. In this way, the application won't see any of the event parameter information.

What is the effective working directory for an Action?
By default, it's C:\AppCenter\misc on NT, assuming that you have accepted the default installation options. On UNIX machines, its AppCenter/misc

What is the preferred WinNT (lightweight) way of doing IPC (Inter-Processes Command) from an SNMP extendible agent DLL to AppCenter, assuming that the Agent and AppCenter both run on the same box?
You will have to use the provided *.libs, namely

  • appmemi.lib
  • devkit.lib
  • threads.lib
to do the IPC.

Can the event log be exported to a flat file, preferably with special character (for example "," or ';" or "|") delimited fields?
No, this is not possible in the current version. However, by creating a filter that is true for every event, you can create an action that will write that event out to the bottom of a log file in any format you like.

Can AppCenter generate an SNMP trap on a login failure, that is, a security trap?
No. This is a feature not currently supported.

Can user login password changes (not the password itself, just the act of changing it), be logged?
No, user logins do not generate events in the current version.


Can AppCenter handle event storms?

AppCenter does not have an event correlation engine and consequently cannot manage event storms.

The AppCenter API

How do I start the AppCenter VisiBroker Server?
The easiest way is to run the file appServer.bat which is locate in AppCenter's bin directory.

I don't see an API to get events out of the repository, just to enter them into it.
True, there is no such API in AppCenter as yet.

AppCenter administration

Do I need to run an agent on a machine that only runs an AppCenter console?
No. An agent is required on any machine that hosts any AppCenter hub component or an object that is managed by AppCenter. A machine that only hosts a console does not need it.

Can I change the rules file? For example, in the case of a fault tolerant group, if a primary object goes down & backup starts up, and then primary comes back up, can AppCenter make the original primary object the new backup?
This is not recommended. The easiest way to do this is not to have a link between the two, but instead put them both in a group with a desired number of children being 1.

Can I grant user privileges on an application by application basis?
This is NOT addressed in the 4.0 release of AppCenter. One way to achieve this is to set up separate AppCenter core management services per application. This has the down side that it no longer becomes possible to view multiple applications from a single Console, though you can, of course, have multiple consoles active.

Another way to approach the task would be to create a unique set of agents for each application.

Can AppCenter share data with monitoring tools such as Netview (IBM), OpenView (HP) and Tivoli? Are there any other monitoring tools it can interface with?
AppCenter is able to define performance statistics that you can make available through SNMP. This allows both Tivoli and OpenView to access them.

I have been trying to get some simple load balancing working but am having difficulty making sense of increment and decrement values. It seems possible to use a lower value for the increment than for the decrement. How can this happen?
Cumulative increment and decrement decisions are based on absolute, not relative values. Also, the cumulative increment and decrement commands are not related to each other. To clarify;

Cumulative increment threshold: The combined values of start/stop decisions for all objects, which if exceeded, causes AppCenter to issue an increment command. The valid value for this threshold should be from 0 to 1.0.

Cumulative decrement threshold: The combined values of start/stop decisions for all objects, which if exceeded, causes AppCenter to issue a decrement command. The valid value for this threshold should be from 0 to 1.0.

The Cumulative Decision value for a group can range from 0.0 to -1.0 for a stop decision and from 0.0 to 1.0 for a start decision. This means a negative value is for a stop decision and positive value is for a start decision. So if the Cumulative Decision value for a group is positive and greater than the cumulative increment threshold value, then dynamic load balancing algorithm issues an increment command on that group (that is, it starts a server on the group). Similarly, if the cumulative decision value for a group is negative and its absolute value is greater than the cumulative decrement threshold (which is likewise an absolute value), then dynamic load balancing algorithm issues a decrement command on that group (it stops a server in the group). The cumulative increment and cumulative decrement thresholds are introduced to avoid unnecessarily issuing an increment command if the cumulative decision value is below the cumulative increment threshold value and decrement command if the absolute value of the cumulative decision is below the cumulative decrement threshold value.

How can I have AppCenter's agent to register with a different broker/database?
For Windows NT:

  1. Duplicate the agent.bat file and name the new version so that it is easily identified as being the agent file for a particular host.
  2. Open the new version of the agent.bat file.
  3. Locate the line entry of 'call env.bat'.
  4. Enter these lines below it:
    • SET BROKER_HOST=NEW
    • SET BROKER_PORT=5555

For UNIX platforms:

  1. Duplicate the agent script and name the new version so that it is easily identified as being the agent file for a particular host.
  2. Open the new version of the agent script.
  3. Locate the line entry of '. ./env'.
  4. Enter these lines below it:
    • BROKER_HOST=NEW
    • export BROKER_HOST
    • BROKER_PORT=5555
    • export BROKER_PORT

How do I register AppCenter's agent as an NT service?

  1. Open a Command Prompt window.
  2. Navigate to AppCenter's bin directory.
  3. Type agents -install -name agent service key -display agent service display name
    For example: agents -install -name Fred_agent_key -display Fred_agent_name
  4. After the service has been added, verify its presence in the Services dialog. The service 'Fred_agent_name' should be visible.

The repository is empty or can't be opened. How do I fix it?
AppCenter's repository may have become corrupted. Signs that this may be the case include

  • Agent fails to start.
  • Database fails to start.
  • Managed objects can't be created.
  • System templates are missing.
The workaround for this is to copy your backup repository into AppCenter's repos directory. If you haven't made a backup copy of your repository, rename your repos directory (something like repos_old) and then rename your repos_restore directory to repos.

You will have to recreate all of your configurations, computers and so on.

I have upgraded from AppCenter 1.6 to 4.0. Are there any special changes that I have to make to my configurations?
You do not have to change any of your configurations once you have upgraded the repository. However you are advised to edit any VisiBroker servers that you are managing (using the upgrade wizard) to include any environment variables that they need (such as Path and ClassPath) which were specified in the agent script or bat file in AppCenter 1.6

The advantages of doing this are that the details in the agent.bat file had to be presented in a definite order for AppCenter to load the VisiBroker server correctly. Specifying the environment details in the servers eliminates this requirement. The second advantage is that it allows you to manage different versions of VisiBroker.

You are strongly advised to back up your existing repository before you make these changes.

Environment variables

How do I create environment variables?
AppCenter makes it easy to create environment variables and apply them to objects. The important thing to remember is that environment variables are created as properties of templates. The following example provides the general process.

  1. In the navigator, open the Templates group.
  2. Right click on the Templates object and select New|Template from the context menu.
  3. In the dialog box, select which group (if any) you want to create the new template under and give it a name. Then click OK.
  4. In the navigator, right click on the template that you have just created and select properties from the context menu.
  5. It is now time to create the environment variable itself. Right click in the editor and select New from the context menu.
  6. On each tab, you need to supply the information that determines the environment variable.
    • On the General tab, supply the Key, Label, Type and Base Class (which must be set to "env"). It is a good idea to use a name like ENV for environment variables, though this is not mandatory.
    • On the Tab Group tab, supply the name of a tab group. Again, It is a good idea to supply a representative name like ENV Var or something of the like. Then click the Add button.
    • On the Possible Values tab, supply these if they are applicable and click the Add button.
    • On the Help Info button, type in any form of information that you think might be useful to the user when viewing this environment variable.
  7. When you have finished, click the OK button. This creates the template containing the new environment variable in AppCenter.Then, click OK to close the properties editor.
NOTE: The first time that you create a property of any sort on a new template that property will not be visible after you click the OK button.

How do I apply an environment variable that I have created to an object?
Applying an environment variable to an object means applying the template. To do this

  1. Open a configuration and select the object that you want to apply the environment variable to.
  2. Select the template tab for that object.
  3. Open the Object Browser, click its templates tab and navigate to the template that contains the environment variable that you want to apply.
  4. Click on the template and drag it onto the object's Template tab.
  5. Click the Add relationships tool and draw a relationship between the object and the template.

How do I apply an environment variable to an existing template?
There are two ways to do this

  1. Create a new property for that environment variable on an existing template, or
  2. Create a new template with that environment variable and make another template inherit from it.

To make one template inherit from another
  1. Select the template that you want to inherit properties.
  2. Click on the template tab if it is not already selected.
  3. Open the Object Browser.
  4. Select the template that you want to inherit properties from, and drag it onto the tab view.
  5. Click the Add Relationship button and draw a relationship between the templates.


How do I apply an environment variable to all of the objects that need it?
Once you have created an environment variable inside a template, you can add it to any object that requires it by dropping it onto that object's template tab and creating a relationship.
If the environment variable is inherited by an existing template, you can propagate it to all of the objects that use the existing template.

  1. Ensure that a relationship exists between the template containing the environment variable and the template that inherits from it.
  2. Select the template that contains the environment variable in the navigator.
  3. Select Tools|Propagate Template Properties in the Menu bar.
  4. Click OK.

Do I need to set any environment variables in the agent's script or file in order to manage objects?
AppCenter automatically sets up the environment variables such as PATH and CLASSPATH that it requires upon installation. You are strongly advised not to alter the such variables because it is possible to specify conflicting versions of runtime libraries for the agent to load. For example, templates for certain managed objects have required environment properties which are used to start the object. If you want to add or change an environment variable, please check the documentation to verify if this will cause a problem.

Using Java VisiBroker servers


What is the easiest way to create a VisiBroker 3.x server with a wizard?
The quickest way to create a server using the wizards is to employ the Express setup. This option makes the fewest demands on you to supply information. YOu supply the minimum amount of information required, and AppCenter automates the rest of the process.

The information requirements for creating a VisiBroker 3.x server with an AppCenter wizard differ slightly, depending upon whether you are using VisiBroker for Java or C++. Start the wizard by right-clicking on a configuration and selecting the Wizards|VisiBroker|New VisiBroker server from the context menu. The fields and options in the wizard for which you are required to supply information are:

C++

  • Create Options: Select the Express option.
  • Server Type: Select the AppCenter option.
  • Display Name: Enter the name that AppCenter will use to identify the server.
  • Host computer: Select the host that the server will run on.
  • Type of Server: Select the C++ option.
  • Runtime path: Specify the runtime path that the server needs when starting. Make sure that $PATH is at the end of the string. AppCenter's agent replaces $PATH with %PATH% for Windows and $PATH for UNIX platforms. An example of a runtime path string is D:\vbcpp331\examples\account;D:\vbcpp331\bin;$PATH
  • Executable name: The name of the executable or script that starts the server.
  • Arguments: Any arguments associated with the executable.
  • Starting directory: This shows where this server will be executed. The starting directory is also the default directory where AppCenter places standard error files for this server.

Java

  • Create Options: Select the Express option.
  • Server Type: Select the AppCenter option.
  • Display Name: Enter the name that AppCenter will use to identify the server.
  • Host computer: Select the host that the server will run on.
  • Type of Server: Select the Java option.
  • Path: This specifies the runtime path that the server needs when starting. Ensure that $PATH is at the end of the string. AppCenter’s agent replaces $PATH with %PATH% for Windows and $PATH for UNIX platforms. An example of the contents of the Path field is d:\jdk1.1.8\bin;d:\vbj34\bin;c:\vbj331\java_examples\bank;$PATH
  • Home: The Java home is required because it is used by Java to find system classes such as classes.zip or rt.jar. An example of the contents of the Home field is d:\jdk1.1.8
  • Java executable: Select an option from the menu. If you use VBJ to launch the server, then the Java options field should contain the string -VBJjavavm java. This tells VBJ to launch the Java Virtual Machine that you defined in the Path setting in previous screen.
  • Java options: This specifies the Java options. Please ensure that the options that begin with -D are placed at the end of the string. For example, -VBJjavavm java -ss500k -ms4m -DReConnect=false -DProperties=%AC_PROPS_FILE%.
    Note: When using VisiBroker 3.4, you need to use the following -D Java options
    • -Dorg.omg.CORBA.ORBClass=com.visigenic.vbroker.orb.ORB
    • -Dorg.omg.CORBA.ORBSingletonClass=com.visigenic.vbroker.orb.ORB

    These specify that the server should use the VisiBroker ORB instead of Sun's one.
  • ClassPath (Environment variable): In this field, you must specify all of the required class paths that your server needs. It is very important to put path or jar files in the right order and ensure that $CLASSPATH is at the end of the string. The required jar files for the server are
    • vbjorb.jar
    • vbjapp.jar
    • vbjtools

    (vbjcosnm.jar should also be included if your server is required to access or query the Naming Service).
  • Main Class (and Arguments): Use this field to specify the server Main Class and extra arguments. For example, com.inprise.appcenter.CorbaServer localHost 5555
  • Starting Directory: This field specifies the starting directory that AppCenter uses to start the server (it is also the default directory where AppCenter puts the standard error files for this server).

When should I use java.exe, jre.exe or vbj.exe?
Sun Microsystems provides two different Java environments; the Java Developer's Kit (JDK) and the Java Runtime Environment (JRE). The JDK allows you to compile your programs and then run them with java.exe. The JRE only allows you to run your programs with jre.exe. You must have either JDK or JRE installed on your computer. Borland VisiBroker for Java provides vbj.exe, a utility for your convenience, which sets some environment variables, adds some extra command line parameters and then launches either java.exe or jre.exe. You don't need to use vbj.exe if you use all the default settings for the osagent (for example, OSAGENT_PORT=14000). If you use VBJ from VisiBroker 3.3 or earlier on Windows NT then AppCenter will not be able to stop your servers with AppCenter.


What are javaw.exe and jrew.exe?
These are the same as java.exe and jre.exe except that they don't start a console.

How should I set up the Java ClassPath?
There are four main elements that must be in the ClassPath for a Java VisiBroker Server to run.

  1. The Java run time classes (java dir/lib/classes.zip for JDK or java dir/lib/rt.jar for JRE). You may include the JFC (or Swing) classes here if your applications include a GUI, but most Java servers will not require a graphical interface.
  2. The VisiBroker ORB classes (vbjorb.jar, vbjapp.jar, vbjtools.jar, vbjcosnm.jar and vbjcosev.jar) are all found in the VisiBroker dir/lib directory). If you are launching your server with vbj.exe, then these are automatically added to your ClassPath.
  3. The Performance Monitor classes which are used if you are collecting performance data (AppCenter dir/perf/VBMonitor.jar).
  4. Your Server classes.
It is recommended that you add the Java runtime classes and the VisiBroker ORB classes to the ClassPath using the VisiBroker server wizard.

The Performance Monitor jar file is added automatically when you set "Gather Performance Statistics" to Yes in the "VisiBroker Server" wizard. The Server classes should be added to the ClassPath in the "VisiBroker Server" wizard. Enter "$CLASSPATH server classpath" in the ClassPath field. If you are using JRE make sure that "-classpath %CLASSPATH%" appears in the "Java Options" field of the "VisiBroker Server" wizard because jre.exe doesn't read the ClassPath environment variable.

$CLASSPATH resolves to the value of the classpath environment that is set for the host that the agent runs on. %CLASSPATH% resolves to the value of the AppCenter property that has the name classpath. You also need to supply JAVA.HOME (which is used to identify the correct version of Java if multiple versions are installed on a machine).

What are the Java Options?
These are the command line options for the Java Virtual Machine (VM). You can see a complete list by typing "java", "jre" or "vbj" at the command line. The AppCenter driver may add extra options before it starts the server. This depends on the choices you make in the "VisiBroker Server" wizard.

What do I enter in the "Main Class (and Arguments)" field?
This is the field where you enter the Java server's class name with the full package name followed by your server's command line arguments.

What is the starting directory?
This is the directory where your server will run. Files will be read in and written out to this directory by default. If you choose to generate .out and .err files in the "VisiBroker Server" wizard then these will also be written to this directory.

How do I see the command line?
On UNIX, run the command ps -deaf and the sever's command line options are displayed. On NT, as part of the NT resources file class is a utility called TLIST.EXE. Running this file for a particular process will show the command line options.

How do I register a Java VisiBroker server with the OAD (Object Activation Daemon)?
At the moment there is a known problem registering a Java VisiBroker server with the OAD. You cannot construct the server in AppCenter as a Java server, but you must treat it like a C++ server. In the "VisiBroker Server" wizard, enter the "Type of Server" as C++, not Java. For the executable name enter the fully pathed Java executable that you're using (e.g. c:\jdk1.1.8\bin\java.exe). Then enter all the Java command line arguments in the "Application Args:" field.
Example: Take the Bank Server in the VisiBroker for Java java_examples directory. Assume that Java and VisiBroker for Java are installed on a computer called "Enterprise" in the directory "c:\jdk1.1.8" and "c:\Inprise\Vbroker" respectively.

  1. Launch the "New VisiBroker Server" wizard
    • Create Options = "Express"
    • Server Type = "OAD"
    • CORBA Server Display Name = "Bank Server"
    • Click on the "Enterprise" computer (If it's not there then make sure the AppCenter Agent is running on that computer and then refresh the Console)
    • Type of Server = "C++" (Note that we can't use Java in the current release)
    • Runtime Path = "c:\jdk1.1.8\bin\;c:\inprise\vbroker\bin;$PATH"
    • Executable Name = "c:\jdk1.1.8\bin\java.exe"
    • Environment Args = blank
    • Application Args = "-classpath=%CLASSPATH% Server"
    • Reference Data = blank

  2. Launch the "New VisiBroker Object" wizard
    • Create Options = "Express"
    • Object Type = "OAD"
    • CORBA Server Display Name = "Bank Object"
    • Skip the screen which allows you to browse the OAD
    • Click on the "Bank Server" server
    • Find Object = "Location Service Entries"
    • Repository Id = "IDL:Bank/AccountManager:1.0"
    • Object Name = "BankManager"
    • Host = IP address (Note: this should already be set)
    • Search Network for Location Agent = false

Miscellaneous

Can a server differentiate between being up because the whole application is being started, or if it is being started because that particular server died & is being restarted and consequently some of initialization steps may not be relevant?
No, you can't. AppCenter starts servers by simply executing the command line necessary to start the server. The server itself has no interaction with AppCenter.

VisiBroker naming service has failed but it still appears in the AppCenter console.
Usually when a process shuts down, it will de-register all its objects from the SmartAgent. However, if a process terminates abnormally or abruptly, any objects which have been registered with the SmartAgent will not be unregistered. The SmartAgent does periodically ping all objects registered with it, and if they do not respond, it will remove them from its list. This means that, for example, if a Naming Service is abruptly terminated, it may still appear in the AppCenter console for some time. If you click on this particular service, the details for the service will not appear since the service is actually a relic which no longer exists.

When I am using a wizard to create or update CORBA servers, the command line in the server's activation property list does not appear to be correct. Do I need to edit it?
No. The command Line in the server's activation property list is not correct until after the server is run. This doesn't cause any operational problems because the server is run with the correct arguments, but it is confusing because what is visible in the console is not consistent with what has been declared. The issue is that the command line can be very complex. The driver interprets all of the various properties that you have set in order to work out what the command line should be. This has to be done in the driver, since it is the only place (apart from wizards) which has direct knowledge of the type of object which is being monitored.

I created my own source script for import. Is there an object validation check in AppCenter import?
In AppCenter 4.0 import does the following check

  1. If the object is invalid, it will not import.
  2. If the object does exist it will update the properties only.

 

If I try to run "mbrokerc" (Solaris installation) on a machine with two addresses, is there a way to define an IP address to which the mbrokerc should bind?
If you have a machine (call it Fred) with two IP addresses, say them 111.22.333.45 (interface X) and 111.22.333.58 (interface Y). Interface X is the public one and the one that is tied (through INS) to the machine name. The AppCenter components will resolve to interface X. In other words, when gethostbyname() is called, the address returned is 111.22.333.45.

Setting AM_HOST_NAME explicitly to the IP address 111.22.333.58 allows each component to bind to interface Y instead.

If you do not want the broker to get the IP via a gethostbyname() call, but you want to set the IP address explicitly, you need to use the environment setting AM_HOST_NAME. Set the host name or IP address that you want to use in the environment variable AM_HOST_NAME. Then when the broker comes up it will use this value instead of the results of a gethostbyname() call.

Viewing online help on Solaris machines
In some browsers, the fonts in which the online help is presented can be very small. In such cases, you need to manually change the font size in your browser. The process used to do this varies, depending on the browser you are using. Similarly, in some browsers, the index and table of contents in the online help have fixed width fonts only.

The OAD won't start C++ managed objects that run on UNIX platforms. why not?
This could be the result of the settings of your OAD in AppCenter. If you are using the OAD to start C++ objects on UNIX platforms, you have to make sure that the OAD properties have been set correctly. Select the OAD object and right click to invoke the context menu. Select Wizards|Update Object Activation Daemon. Then move through to the Implementation Repository Paths. Both the Implementation Repository Directory and Implementation Repository File Name paths must contain the correct information. They cannot be left blank.

What are the usage considerations when using the console on a UNIX platform?
There are a number of requirements and limitations specific to UNIX platforms running Java GUI applications.

Drag and drop

Dragging on UNIX platforms may not work correctly in all cases. You can generally workaround this by using the copy/paste option.

Pop-up menus with checkmarks

Under UNIX, pop-up menus with check marks next to them may not execute correctly. This is due to a bug in some versions of the Java virtual machine. This means that certain menu options are not available, such as the layout options on diagrams.

Hierarchical menus

Some Java virtual machines have problems displaying hierarchical menus. You will experience a core dump some time after displaying a context menu which has submenus. To solve this, add the following command-line option to AppCenter: -Dflatten.menus=true Set this to true for systems which have problems displaying hierarchical menus.

Missing menu bar

When switching from Icon mode to Editing mode, the menu bar may not appear. Resize the window to resolve this problem.

Using the keyboard to select a command

To select a menu command using keystrokes, click a menu option to activate the menu bar. Use the arrow keys to move the highlighted area and press Enter to make a selection. You can also use shortcut keys to execute functions in AppCenter.

Resizing windows from left or top causes erratic behavior

If you resize one of the AppCenter main windows from the left or the top under UNIX, drag-and-drop behaves erratically. To work around this problem. Always resize from the right or bottom. Move the entire window slightly. This causes the coordinates to reset, fixing the problem.

Erratic display of images

In some circumstances, the images in AppCenter's online help may not be displayed in their true colors. This is due to the UNIX operating system capturing the colors that your browser is trying to use. The solution to this is to use the operating system's Style Manager|Colors option to make more colors available for the applications.

Borland Software Corporation
http://www.borland.com
100 Enterprise Way
Scotts Valley, CA 95066
Voice: (831) 431-1000
pubsweb@borland.com

Unless otherwise noted, all materials provided in this software are copyright © 2000 of INPRISE Corporation, Inc. All Rights Reserved.

 
Site Map Search Contact