Problem

My own client can access my component just fine, but object explorer gives an exception when I click on it - why?

Solution

A: If there was a problem loading IDL into the interface repository, this is the reason.

Look very carefully at the output from the startup of acs (acsStart and/or the output of starting ACS in acscommandcenter). Did you notice any problems with the interface repository loading the IDL files, such as things like (but not limited to) a redundant declaration in the same IDL namespace (e.g. declaring an item of the same name two or more times in the same namespace - this can occur when reopening a module in more than one IDL file and then declaring an item of the same name in both files, thereby twice in the same namespace). If you notice an error (it may even look more like a warning and you may have been tempted to ignore it) about the loading of the IDL into the interface repository, this is the cause of the problem. It may look something like this:


==> Please see /alma/ACS-4.1/acsdata/tmp/acsStart.1135 for debug output
==> Starting ACS......../INTROOT/idl/testStructs.idl:44: identifier 'TestStruct' defined twice in this scope

Now, you still may ask "but why does it work for my regular client?" The answer is that 99.9 percent of clients never access the interface repository, so there will be no adverse effects in your client from the failure of the interface repository to load properly. Only clients which do dynamic loading of components via "introspecting" the interface repository to determine what to load will exhibit the problem. Object explorer is one such client, oftentimes the only such client. Most regular clients load a component directly by name and never hit the interface repository at all, and therefore will never see the problem.

Additional related background information that may be useful:

FAQ on how the interface repository loads and how it can fail
FAQ on potential enum pitfalls in IDL

-- SteveHarrington - 07 Sep 2004