I have a requirement to use an XML File as a data source, and the XML is made available in the Unix server where the agent is running. In ODI on my Windows machine, testing the connection of the XML “Data Server”, I get a successful test connection, and a DTD is created on the working directory (whenever it is missing). This means that, I do have access to write files in the working directory of Unix server.
However, the problem is encountered when I reverse engineer the XML to retrieve the structure of the file (located in Unix server) and make it in a datastore. It seems that during the “Reverse Engineer” process, ODI is using the local agent rather than J2EE agent (Unix server) that I have, thus it can’t “see” file, thus the error message: "ODI-40844: Could not generate the DTD because the file could not be created. Verify that you have write permission in the directory."
Unfortunately, I am not able to customize the Reverse Engineering process to use J2EE agent as there is no out of the box ODI Reverse Knowledge Modules for XMLs. Creating the structure (Datastore) of the XML manually in ODI under XML Technology does not solve the problem either, because ODI still sees the Datastore as a FILE Technology and not an XML Technology (Error: ODI-40426: Url must start with jdbc:snps:dbfile).
Please advise on how to reverse engineer a remote xml file. TIA.
What I have done in the past, and seems to work, is execute an Interface or Procedure in simulate mode, choosing the agent that you would like to use in reverse engineering the XML. Then, attempt to reverse engineer the file again. Not sure if this will work, but it has for me at times. You might also try this and restarting ODI to clear out anything 'cached' in the JVM.
It seems ODI is caching the agent that you are using - but I'm not sure how to properly change it.