Interrogate BROKER with Java via EntireX?

Hi there,

I’m trying to retrieve information via ACI from the Broker to report clients / other data.

I keep getting:
Error 0020 0267: API: CID=NEW required for this service

I don’t think I am instantiating is correctly:
BrokerService bs = new BrokerService(broker, “SAG/ETBCIS/INFO”);
BrokerMessage bm = new BrokerMessage();
bm.setMessage(“CID=NEW”);
bs.send(bm);

Is there some documentation to help assist?

Thank you.

Try the javadocs for ACI. For 10.5, this is found at:
https://techcommunity.softwareag.com/ecosystem/documentation/webmethods/entireX/exx10-5/10-5_EntireX/aci_java/javadoc/com/softwareag/entirex/aci/Conversation.html

Incidentally, there are RPC services to support the CIS functions that are probably easier to use than the ACI version. See EntireX RPC Programming > Command and Info Services IDLs (https://techcommunity.softwareag.com/ecosystem/documentation/webmethods/entireX/exx10-5/10-5_EntireX/rpc/cis-idl.htm#cis-idl)

If you want to stay with the ACI interface, you need to set the message to the input values that the service expects (the “InformationRequest Structure”). The CID settings are managed in the context of whether you are using a Conversation (which the ETBCIS services typically will need) or not.

Hi,
Douglas is right, Using RPC to access Info and command services is easier. If you want to say with ACI there is a description for
Writing Applications: Command and Information Services, see https://techcommunity.softwareag.com/ecosystem/documentation/webmethods/entireX/exx10-5/10-5_EntireX/aci/cis.htm#cis . You need to translate the protocol given there into Java ACI calls using the right methods. For Info service you need to open a conversation (Send with wait) followed by receive calls without wait to gather all the information. Parsing the received data is also your task. You all get this for free using RPC . . . .

Thanks for the advice, i’ll try via RPC instead then and post results.

Cheers!

RPC Works great, thanks for the advice, really powerful (especially the command stuff!)

We’re using this for a health check / monitoring REST service (and tying it into a dashboard).

Leaving this here for help for others:

    Broker broker = new Broker("mvsimda:18024", "JavaCIS");
    try {
        BrokerService bs = new BrokerService(broker, "SAG/ETBCIS/INFO");
        InfoServiceBroker is = new InfoServiceBroker(bs);
        is.getInfo();

Example excerpt output of is.getRecords() (plenty more info for that specific):

Total number of objects: >1<
Current number of objects: >1<
Maximal length of class name: >0<
Maximal length of server name: >0<
Maximal length of service name: >0<
Maximal length of user Id: >0<
Maximal length of token: >0<
Maximal length of topic name: >0<
Request timestamp in seconds: >1572245485<, >Mon Oct 28 06:51:25 AEST 2019<
ErrorCode: >00000000<
ErrorText: >Successful response<
LengthOfLongestRPCLibrary: >0<
LengthOfLongestRPCProgram: >0<