|
|
FAQ Metamerge Integrator 4.6Questions:Installation and licensing:
Writing AssemblyLines:
Security
Error messagesLimitations:
Third party software
AnswersInstallation and licensing:Q: My license is about to expire. What do I do?Contact your sales representative. He will send you a new license file (aslicense.jar). You will need to replace your old license file with this one on all computers where you are running Metamerge Integrator. The location of the old file is dependent on what version of Metamerge Integrator you are running:
Q: I have a Unix system without X-Windows. How do I install Metamerge Integrator?We will here assume that setting the DISPLAY variable does not help you: The target system could for example be on a protected net that cannot see your X Server. You will of course not be able to run the Admin Tool, as it has a GUI, but you can still run the MI server. What you have to do is:
Q: I have installed a new version, service pack or Connector version, but I just see the old functionalityMake sure that all your old jar-files in the jars directory and subdirectories are renamed to an extension different than .jar . For example, if you have a new jdbc.jar, make sure it either replaces the old one, or that you rename the old to jdbc.jar.old. This is because the jar-file loader will pick up any jar-files it finds. So renaming a file is not enough: For the loader to miss it it cannot have the extension .jar. If you do a full install, make sure you install on a fresh directory and copy your licence file (aslicense.jar) from/to the jars/ directory. Q: Can I install different versions of Integrator on the same computer?Yes. Just make sure you don't install them on the same or overlapping directories. Also remember that, under Windows, your shortcuts/program menu will only point to one specific instance of miadmin.exe or miserver.exe You can also have them use different version of Java: Each installation has .lax files that are edited during installation (see description in Distribution Components for more on the .lax files)
Writing AssemblyLines:Q: I need the file my AssemblyLine creates before the AssemblyLine has finished, but it is empty or incompleteQ: I need to change the output filename while the AssemblyLine is processingFiles are closed only when the AssemblyLine terminates. However, you can force a Connector to close and reinitialise. The snippet of code below will create a new file each time it is executed: The filenames will be file1.xml, file2.xml etc. (assuming the variable iteration was initialised to 0).
This code can be put wherever you want, even within the Connector itself! connector.terminate() is not as dangerous as it sounds. If you have opened the AddOnly Connector in append mode, the setParam() is not necessary, but for output mode the sequence terminate() and initialize() would make you loose previous work. Q: I need to pass the input/output file names (or other Connector parameters) to an AssemblyLine I start from an EventHandlerOn the EventHandler side, you want to pass a filename over to the AssemblyLine, and the easiest way is to use an entry object. Here the filename is called myFileName, and we use a Property instead of an Attribute
On the AssemblyLine side you will have code in your Prolog, in the Before Connectors Initialized part (because you want you parameters to be used when the Connectors are initialised).
There are a couple of finer points here:
Q: When creating XML files from an LDAP directory or LDIF file, the AssemblyLine failsWhen reading from an LDAP directory or an LDIF file, the distinguished name will typically be in an attribute named $dn. If you map this attribute without changing the name into an XML file, it will fail because $dn is not a legal tag in an XML document. If you do explicit mapping, you should change "$dn" to "dn" (or something without a special character) in your output connector. If you do implicit mapping (e.g. * or "Automatically map all attributes" checked in AssemblyLine/Settings) you could configure the XML parser to translate the distinguished name (i.e. $dn) to a different name. For example, you could add something like this in the Before Add Hook: conn.setAttribute("dn", work.getAttribute("$dn")); Q: When I compare JavaScripts strings, I get inequality despite the fact that the strings are equalJavaScript has two kind of strings: String literals like "test", and the string Object you will get as a result of new String(); Usually string literals are used, but when you use methods like work.getString("a") it will return a string Object. This topic is treated in depth here. Q: Can I use Bean Shell with with Metamerge IntegratorWe have tested it briefly, but not certified it. If you want to try it out, follow the instruction given here. Q: How do I start the Metamerge Integrator from a trigger in my database?There are many ways to do that.
Discussion:Writing to a TCP port and using the TCP Port EventHandler seems nice, but should be avoided if you are concerned with data being lost: You (or the trigger) will have no simple way of knowing what data have and have not been processed. The same can be said for a solution involving the HTTPClient. However, if you have access to JMS Message Bus technology, the trigger can simply drop the data to be processed on the bus. Q: I have an AssemblyLine with an iterator in it, but some of the entries are skipped. Why is that?If you have a Lookup Connectors after your Iterator, the Connector might fail due to no or multiple entries found (see Hooks, Failure Hooks). The failing Lookup Connector will cause the AssemblyLine to skip the entry and tell the Iterator to move on with the next entry. However, if the On Error hook of the Lookup Connector is enabled (see Enabling Hooks) , the AssemblyLine will think the error is taken care of and proceed. Of course, you should put code there to check whether the error was serious or just acceptable (for example no entries returned). Checking the content of your attributes is one way, using the rscTaskComponent method getDuplicateEntryCount () is another. See Hooks, Lookup OK for more on this Q: I have a new version of a script connector (or parser) in the base template library, but my AssemblyLine seems to use an old one?When you modify a Script Connector (or Parser), the script gets copied from the Library where it resides and into your configuration file. This has the advantage of you being able to customise the script, but the caveat that new versions will not be known to your AssemblyLine. If your script connector was inserted in the configuration file using a Admint Tool with version number 4.6 beta or lower, you will have the content of the script copied into your configuration file regardless of whether you have changed it or not. Removing the old script Connector from the AssemblyLine and re-introducing it will get you around this (but remember to copy over code from your hooks!) Q: I have written my own Connector, and it used to work. When I recompile it now, why has it stopped working?First of all, from version 4.6, a new public String getVersion() method is mandatory (so you can keep track of the version of your Connector). Another source of problems, could show up if you use the same libraries as Integrator. A new version of Integrator might have updated it's libraries, or you might have upgraded your libraries since last time you compiled your Connector. Q: I want to copy a whole LDAP directory to another. How do it do that?This is treated in the LDAP documentation, and an example is provided as well. I need to debug a Script Connector (or other object) where the task object is unavailable. How to I access task.debugMsg () and other log-functionality?
Assuming JavaScript, the task object can be fetched by
main can always be be accessed through SecurityQ: I need support for 128 bits RC4 bulk encryption over SSL. Why is it not supported?Integrator supports SSL through JSSE. The version delivered with Integrator 4.6 only supports 40 bits RC4 encryption. A newer version (1.0.3) supporting 128 bits RC4 is available and can be downloaded from http://java.sun.com/products/jsse/index-103.html . Refer to the download link to see what other cryptographic suites are supported by 1.0.3 (RSA, DES, Triple DES, Diffie-Hellman, DSA)
Q: I need Third Party SSL Socket Factories. Are those supported?This is a matter of what version of JSSE you have. Due to export restrictions, only the Global version of JSSE is delivered with Integrator. If you reside in the USA or Canada, refer to Sun's JSSE home page to download a more powerful version. Q: How do I use certificates from Trusted Third Parts?Refer to the Certificate Manager for more on this.
Error messagesERROR> AssemblyLine x failed because No criteria can be built from input (no link criteria specified)This happens when you have, for example, a link criteria like
but the w_uid working attribute is not present in the work entry. This could be because it has not been read from the input sources, or was not present in the input sources. In other words, work.getAttribute("w_uid") would return null. One way to avoid this is to write, in the before_execute hook of the Lookup or Update Connector that fails, some code to skip the Connector when the link criteria cannot be resolved. For example:
Your business logic may require other processing, like a skipEntry() call instead of an ignoreEntry(). (skipEntry() will switch to the next entry returned by the current iterator).
Limitations:Q: I run out of memory, but have more available. Can something be done?Increasing the memory available to the Virtutal MachineSome components, such as the XML parser, will use a lot of memory, and the Java VM default only has 64 MB available. In order to increase the memory available to miserver (or miadmin), you can add this line to miserver.lax (or miadmin.lax):
This will allow 256Mbyte memory to be used. Notes
Limiting the number of threadsWhen using certain EventHandlers (like TCP or HTTP), or when your AssemblyLines start firing up other AssemblyLines which again can start other, you might use a lot of memory. See the section about How to Control the Number of Threads for a discussion on this. Q: Does Integrator support double bytes character sets?Integrator is written in Java which in turn supports Unicode (double bytes) characters sets. However, external components like drivers might not support the set. Scripting languages supported by WSH (Windows Scripting Host) will probably cause problems when using Unicode character sets. Third party software:Q:What version of JavaScript is included and can I replace it with a newer one?We are currently using Rhino version 1.4R3 from Mozilla. A newer version (1.5 R2) is available and can be downloaded, see instructions below. We know of few problems (see below) with this version, but you replace the Rhino/BSF engines at your own risk. For description of changes between Rhino 1.4R3 and 1.5R2, see http://www.mozilla.org/rhino/download.html Here are the instructions you need to upgrade: 1. Download
2. Remove"jstools.jar" and "bsfengines.jar" from the "jars" directory. You should then be up and running with the BSF2.2 (see http://oss.software.ibm.com/developerworks/projects/bsf ) and Rhino 1.5R2 ( http://www.mozilla.org/rhino/ ) versions. Improvements that you will note:
Know problems:Sometime, at places where objects (in particular work) are null, Integrator might behave differently (it might in fact abort because work is undefined). You will experience this if you have code using work before Connector initialisation and in similar cases of 'early' work use where work is not defined. Q: Can I use Java 1.4 with Integrator 4.6?We do not yet support Java1.4, but you can do the following:
Usually the above description works, but there have been issues under Windows where you will get the message "Could not load jvm.dll" when trying to start miserver or miadmin. If this happens to you, try installing the full 4.6.8 (not patched 4.6.4). If the problem persists, let us know (see below). Java 1.4 is not supported as Integrator JVM, so you might be on your own if you run into problems. Here are the known problems:
Of course, we are interested in reports pinpointing problems with Java 1.4. |
|
|