Skip to Content

Archived discussions are read-only. Learn more about SAP Q&A

Can not syndicate with MDM JAVA API

Hi

I want to create the syndication java web component which does the same as SAP MDM Syndicator client.

The syndication class SyndicatePortCommand has no error messages. But I do not get XML file in the Port "ready" folder.

The MDM JAVA version is MDM_JAVA_API 710 SP5 (1000.710.0.5.99.20101008052600)

What is wrong in my code?

Thanks

Dan

My code is

// create connections pool to a MDM server
String serverName = "myServerName";
ConnectionPool connections = null;
try {
    connections = ConnectionPoolFactory.getInstance(serverName);
 } catch (ConnectionException e) {
    e.printStackTrace();
    return;
};

// specify the repository to use
String repositoryName = "myRepositoryName";
String dbmsName = "dbmsName";
RepositoryIdentifier reposId = 
    new RepositoryIdentifier(repositoryName, dbmsName, DBMSType.ORACLE);

// get list of available regions for the repository
GetRepositoryRegionListCommand regionListCommand = 
    new GetRepositoryRegionListCommand(connections);
regionListCommand.setRepositoryIdentifier(reposId);
try {
    regionListCommand.execute();
} catch (CommandException e) {
    e.printStackTrace();
    return;
}
RegionProperties[] regions = regionListCommand.getRegions();
RegionProperties region = regions[0];
		
// create a user session
String sessionId = "";
CreateUserSessionCommand sessionCommand =
new CreateUserSessionCommand(connections);
sessionCommand.setRepositoryIdentifier(reposId);
sessionCommand.setDataRegion(region);
try {
    sessionCommand.execute();
} catch (CommandException e6) {
    // TODO Auto-generated catch block
    e6.printStackTrace();
}
sessionId = sessionCommand.getUserSession();

// authenticate the user session
String userName = "userName";
String userPassword = "userPassword";
AuthenticateUserSessionCommand authCommand =
    new AuthenticateUserSessionCommand(connections);
authCommand.setSession(sessionId);
authCommand.setUserName(userName);
authCommand.setUserPassword(userPassword);
try {
    authCommand.execute();
} catch (CommandException e) {
    e.printStackTrace();
    return;
}

// event dispatcher
try {
    EventDispatcher eventDispatcher = new EventDispatcher(serverName);
    MyRepositoryEventListener reposListener =
        new MyRepositoryEventListener();
    eventDispatcher.addListener(reposListener);
    eventDispatcher.registerRepositoryNotifications(
        userName,
        userPassword,
        reposId);
} catch (ConnectionException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
} catch (CommandException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

// get port
GetPortListCommand getPortsCmd = new GetPortListCommand(connections);
getPortsCmd.setSession(sessionId);
try {
    getPortsCmd.execute();
} catch (CommandException e2) {
    // TODO Auto-generated catch block
    e2.printStackTrace();
}
PortProperties[] portList = getPortsCmd.getPorts();
String portCode = "myPort";
// search a specific portCode
PortProperties port = null;
for (int i = 0; i < portList.length; i++) {
    if (portCode.equals(portList<i>.getCode())) {
        port = portList<i>;
        break;
    }
}
if (port == null) {
     throw new RuntimeException("Can't syndicate, port doesn't exist");
}

// call syndication
// expected to produce xml file in Port, but it DOES NOT
String filePrefix = "Data_";
SyndicatePortCommand syndicatePortCommand =
    new SyndicatePortCommand(connections);
syndicatePortCommand.setSession(sessionId);
syndicatePortCommand.setFilePrefix(filePrefix);
syndicatePortCommand.setPortId(port.getId());
syndicatePortCommand.setRemoteSystemId(port.getRemoteSystemId());
try {
    syndicatePortCommand.execute();
} catch (CommandException e4) {
    e4.printStackTrace();
}

// should retrieve the syndicated records as described from http://help.sap.com/javadocs/MDM71/syndication.html
// but in the real world, it moves xml file  (produced by SAP MDM Syndicator client) from ready folder to archive folder which is wrong
GetPortDataFilesCommand getPortDataFilesCommand =
    new GetPortDataFilesCommand(connections);
getPortDataFilesCommand.setSession(sessionId);
getPortDataFilesCommand.setRemoteSystemId(port.getRemoteSystemId());
getPortDataFilesCommand.setPortId(port.getId());
getPortDataFilesCommand.setFilePrefix(filePrefix);
try {
    getPortDataFilesCommand.execute();
} catch (CommandException e5) {
    // TODO Auto-generated catch block
    e5.printStackTrace();
}

Edited by: dansapexpert on May 31, 2011 5:24 PM

Edited by: dansapexpert on May 31, 2011 5:34 PM

Edited by: dansapexpert on May 31, 2011 5:40 PM

Tags:
Former Member
Not what you were looking for? View more on this topic or Ask a question