When using VB API, the position name is different from actual source server IP. Eg Source server IP is 180.*.*.*, the position name is 10.*.*.*. When using the Java EMA API, the position IP is same as the Source server IP. What could be different?
When using VB API, the position name is different from actual source server IP. Eg Source server IP is 180.*.*.*, the position name is 10.*.*.*. When using the Java EMA API, the position IP is same as the Source server IP. What could be different?
Hi @Pulaputra.Sudheer, I'm not sure what is your expectation
Is it possible for me to see the configuration files of both applications?
We have not hardcoded the position names. But both API's running on the same server are using different position names. This is giving us the error
state: state: closed/suspect/Not entitled - text: "Access denied-already using position *.*.*.*".
We are able to run only one api at a time. We expect both API to have the same position name as they are running on the same server.
Does the server have multiple network interface cards?
Typically, SFC COM will use gethostbyname function to retrieve the IP address of the machine and use the first IP as a position.
You can use nslookup to verify the IP address of the server.
Normally the message “Access Denied-already using position x.x.x.x” was generated by DACS Server (which is an authorization/entitlement component) when a user runs a client application and uses the same DACS username on multiple machines.
Basically, each DACS user has a limit number of simultaneous login from a particular IP address. This will need to be increased to allow the user to connect. The number of simultaneous logins allowed for each user can be set on DACS Console.
For this case, it seems like the DACS server does not allow simultaneous logins. However, if the DACS server allows logins from multiple addresses. You can customize 'position' using the method as follows:
<<EMA Java>>
You can use an OmmConsumerConfig.position() method to specify a value of position:
AppClient appClient = new AppClient(); OmmConsumerConfig config = EmaFactory.createOmmConsumerConfig(); consumer = EmaFactory.createOmmConsumer(config.host("192.168.27.46:14002").username("user").position("10.20.30.40/test"));
Result:
Outgoing Reactor message (Wed Feb 15 16:36:46 ICT 2017): <!-- rwfMajorVer="14" rwfMinorVer="1" --> <REQUEST domainType="LOGIN" streamId="1" containerType="NO_DATA" flags="0x04 (STREAMING)" dataSize="0"> <key flags="0x26 (HAS_NAME|HAS_NAME_TYPE|HAS_ATTRIB)" name="user" nameType="1" attribContainerType="ELEMENT_LIST"> <attrib> <elementList flags="0x08 (HAS_STANDARD_DATA)"> <elementEntry name="ApplicationId" dataType="ASCII_STRING" data="256"/> <elementEntry name="Position" dataType="ASCII_STRING" data="10.20.30.40/test"/> <elementEntry name="Role" dataType="UINT" data="0"/> </elementList> </attrib> </key> <dataBody> </dataBody> </REQUEST>
<<SSL COM>>
In SSL COM API, there are two position-related parameters that you need to check:
*UserName
DACS security specification in BNF format. This string should be formatted as follows:
user_name+application_id+position_info
The “+” character is used as a separator. If set, at least the user_name portion should be specified.
*useDefaultDACSUserName
If the DACS username is defined with the parameter "UserName" in the registry <HKLM SOFTWARE PATH>\Reuters\Common\DACS, the username of SSL COM configuration will be overridden with the DACS username by default.
To disable this default DACS username, the parameter "*useDefaultDACSUserName" must be set to "False". The default value is "True".
Changing the registry for the VB API does not help. However, when we change the Username(username+AppID+Position) in code, the position name is appended to the existing Position name. Eg - 172.*/10*. What we want is for the new position given in the code to replace the existing position. But it is appending and not replacing.