1 Reply Latest reply: Jul 28, 2012 1:10 PM by SandiBron RSS

    ODI 11g XML reverse engineer with remote agent problem

    SandiBron
      Hello !

      Today I started to reverse engineer a XML model from file. The file is simple, for those familiar with Security in Hyperion Planning (replaced actual group and member name with dummy for forum)

      file: security.xml

      <?xml version="1.0" encoding="UTF-8" ?>
      <acls>
      <acl>
      <name>GROUP_NAME_HERE</name>
      <objectName>MEMBER_NAME_HERE</objectName>
      <objectType>SL_DIMENSION</objectType>
      <accessMode>READWRITE</accessMode>
      <flag>@IDESCENDANTS</flag>
      <isUser>N</isUser>
      </acl>
      </acls>

      When creating the data server I use:

      driver: com.sunopsis.jdbc.driver.xml.SnpsXmlDriver
      jdbc url:jdbc:snps:xml?f=/home/oracle/security.xml&s=SECURITY_SCHEMA&dp_driver=oracle.jdbc.driver.OracleDriver&dp_url=jdbc:oracle:thin:@<serverinfo>&dp_user=SECURITY_XML&dp_password=<encrypted password>&dp_schema=SECURITY_XML

      When I test the connection against the remote agent it verifies sucessfully and creates the schema objects on SECURITY_XML schema in the DB. Also creates the security.dtd file in the same location as the security.xml fil on remote server.

      In the remote agent console I see this warning:

      WARNING ODI-40859: Could not read the file to get its associated schema because an IOException occurred saying no protocol: /home/oracle/security.xml

      because of that warning I cannot select the schema from dropdown in Physical Schema definition, so I type in by hand SECURITY_SCHEMA.

      Next is the model creation. I create the model and define the logical schema that is used for the corresponding physical schema and choose the XML technology. On reverse engineer tab I choose custom and select my own remote agent, but can not reverse engineer because i dont know the RKM and i put the radiobutton back to Standard. I save it and go to selective reverse engineer tab and when I click on the objects to reverse engineer I get the following error:

      ava.sql.SQLException: ODI-40844: Could not generate the DTD because the file could not be created. Verify that you have write permission in the directory.
           at com.sunopsis.jdbc.driver.xml.SnpsXmlSchema.generateDTD(SnpsXmlSchema.java:880)
           at com.sunopsis.jdbc.driver.xml.SnpsXmlSchema.<init>(SnpsXmlSchema.java:511)
           at com.sunopsis.jdbc.driver.xml.SnpsXmlSchemaManager.createNewSchema(SnpsXmlSchemaManager.java:294)
           at com.sunopsis.jdbc.driver.xml.SnpsXmlSchemaManager.getSchemaFromProperties(SnpsXmlSchemaManager.java:272)
           at com.sunopsis.jdbc.driver.xml.SnpsXmlDriver.connect(SnpsXmlDriver.java:110)
           at oracle.odi.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:409)
           at oracle.odi.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:385)
           at oracle.odi.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:352)
           at oracle.odi.jdbc.datasource.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:331)
           at oracle.odi.jdbc.datasource.LoginTimeoutDatasourceAdapter.doGetConnection(LoginTimeoutDatasourceAdapter.java:99)
           at oracle.odi.jdbc.datasource.LoginTimeoutDatasourceAdapter.getConnection(LoginTimeoutDatasourceAdapter.java:62)
           at oracle.odi.core.datasource.dwgobject.support.OnConnectOnDisconnectDataSourceAdapter.getConnection(OnConnectOnDisconnectDataSourceAdapter.java:74)
           at com.sunopsis.sql.SnpsConnection.testConnection(SnpsConnection.java:1121)
           at com.sunopsis.dwg.reverse.Reverse.getLocalConnection(Reverse.java:945)
           at com.sunopsis.dwg.reverse.Reverse.getLocalConnection(Reverse.java:994)
           at com.sunopsis.dwg.reverse.Reverse.getLocalConnection(Reverse.java:959)
           at com.sunopsis.dwg.reverse.Reverse.getNewTables(Reverse.java:1783)
           at com.sunopsis.graphical.frame.edit.EditFrameSnpModel.reinitializeTable(EditFrameSnpModel.java:2886)
           at com.sunopsis.graphical.frame.edit.EditFrameSnpModel.jCheckBoxSelectTable_ActionEvents(EditFrameSnpModel.java:2763)
           at com.sunopsis.graphical.frame.edit.EditFrameSnpModel$IvjEventHandler.actionPerformed(EditFrameSnpModel.java:297)
           at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
           at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2319)
           at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
           at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:291)
           at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
           at oracle.bali.ewt.olaf2.OracleButtonListener.mouseReleased(OracleButtonListener.java:44)
           at java.awt.Component.processMouseEvent(Component.java:6289)
           at javax.swing.JComponent.processMouseEvent(JComponent.java:3268)
           at java.awt.Component.processEvent(Component.java:6054)
           at java.awt.Container.processEvent(Container.java:2042)
           at java.awt.Component.dispatchEventImpl(Component.java:4652)
           at java.awt.Container.dispatchEventImpl(Container.java:2101)
           at java.awt.Component.dispatchEvent(Component.java:4483)
           at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
           at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
           at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
           at java.awt.Container.dispatchEventImpl(Container.java:2085)
           at java.awt.Window.dispatchEventImpl(Window.java:2479)
           at java.awt.Component.dispatchEvent(Component.java:4483)
           at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
           at java.awt.EventQueue.access$000(EventQueue.java:85)
           at java.awt.EventQueue$1.run(EventQueue.java:604)
           at java.awt.EventQueue$1.run(EventQueue.java:601)
           at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
           at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
           at java.awt.EventQueue$2.run(EventQueue.java:618)
           at java.awt.EventQueue$2.run(EventQueue.java:615)
           at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
           at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
           at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
           at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
           at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:175)
           at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:170)
           at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:162)
           at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

      Again ... if I use everything on local, XML file on local etc it works fine and it reverses without a problem (also the schema apears in the drop down of the Physical Shcema ...).

      What am I missing here ? Any help would be much apreciated ! The question would be, how to make ODI reverse engineer XML on the remote agent.

      Cheers!
        • 1. Re: ODI 11g XML reverse engineer with remote agent problem
          SandiBron
          As a workaround I defined the XML file path like this /xxxx/xxxxx/xxxx/xxxxxx/xxxx/myXMLFile.xml

          So windows is default on working dir the one that your local agent is setup for, in my case its D: i created the xxxx directories on windows just to be able to use the same path on the remote agent on linux.

          After the reverse engineer on windows went trough i deleted the folder, since I dont need it anymore and am running the SYNCHRONIZE FROM DATABASE to create the XML file on the Linux agent, its not complaining cause linux can also resolve the
          /xxxx/xxxxx/xxxx/xxxxxx/xxxx path

          Best regards