Я использую очереди данных в AS400 / iSeries и читаю из них, используя библиотеку jdbc jt400.
Поскольку это шаблон производителя (AS400) / потребителя (myapp), я хочу проверить, сколько записей вочередь данных теперь и определите, работает ли мое приложение достаточно быстро или мне нужно что-то изменить.
Я могу получить максимальную длину / размер очереди данных, но не текущую длину / размер.
Как я могу получить или рассчитать это значение?
Я могу использовать программу RPG и вызывать ее, но предпочитаю решение jt400 / jdbc.
Спасибо
Я редактирую этот вопрос, чтобы добавить код, который должен выполнять эту задачу, но я получаю Исключение:
String pname = "/QSYS.LIB/QMHQRDQD.PGM";
int param0_size = 120; // RDQD0100 size
int size = -1;
ProgramCall spgm = new ProgramCall(as400);
ProgramParameter[] params = new ProgramParameter[4];
params[0] = new ProgramParameter(param0_size);
AS400Bin4 length = new AS400Bin4();
params[1] = new ProgramParameter(length.toBytes(param0_size));
AS400Text formatname = new AS400Text(8);
params[2] = new ProgramParameter(formatname.toBytes("RDQD0100"));
AS400Text dataqueuename = new AS400Text(20);
params[3] = new ProgramParameter(dataqueuename.toBytes("DTQDTQ LIBFIC "));
byte[] RDQD0100 = new byte[120];
try {
spgm.setProgram(pname, params);
if (spgm.run() == true) {
AS400Text out = new AS400Text(param0_size);
RDQD0100 = out.toBytes(params[0].getOutputData());
ByteBuffer bb = ByteBuffer.wrap(RDQD0100);
bb.position(76); // Number of entries currently allocated
size = bb.getInt();
}
}
catch (Exception e){
Logger.error(" ERROR {} ", e);
}
return size;
Я всегда получаю -1 в качестве ответа и Исключение в строке RDQD0100 = out.toB ..
Исключением является
java.lang.ClassCastException: [B не может быть приведен к java.base / java.lang.String
Есть какие-нибудь подсказки?Еще раз спасибо