【发布时间】:2019-03-21 04:16:23
【问题描述】:
我是 IIB 和 stackoverflow 的新手,只是在玩一些流程。我收到一个错误The Java method 'MQDepth.getMQDepth' could not be found。我提到了here,它说两种部署jar的方法,(i)将JAR文件添加到BAR文件中(ii)将JAR文件存储在以下任一位置地点。我找不到任何解释如何将 jar 添加到 bar 的网站,所以我选择了选项 (ii)。下面解释了我做了什么以及我得到的错误。任何帮助将不胜感激。
我创建了一个流程:
“超时通知节点”设置为自动(比如 1 分钟)→ 计算节点→ MQ 输出节点
我想做什么:
自动检测队列的CurrDepth,暂时生成一个XML(这里会改成有附加条件的邮件)。代码 (esql) 调用自定义过程 (GetCurrDepth)。
计算节点代码:
DECLARE queueManager CHAR;
DECLARE queueName CHAR;
DECLARE queueDepth INT;
SET queueManager = 'DDMQBKD10';
SET queueName = 'INPUT';
CALL GetCurrDepth(queueManager, queueName, queueDepth);
IF queueDepth > 0 THEN
SET OutputRoot.XMLNSC.Report.QManager = queueManager;
SET OutputRoot.XMLNSC.Report.QName = queueName;
SET OutputRoot.XMLNSC.Report.QDepth = queueDepth;
END IF;
调用 GetCurrDepth :
CREATE PROCEDURE GetCurrDepth(IN qMgr CHARACTER
,IN qName CHARACTER
,OUT qDepth INTEGER)
LANGUAGE JAVA
EXTERNAL NAME "MQDepth.getMQDepth";
GetCurrDepth JAVA:
import com.ibm.mq.MQException;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
import com.ibm.mq.constants.MQConstants;
public class MQDepth {
public static void getMQDepth(String QManager, String Q, Integer QDepth) throws MQException
{
// define the name of the QueueManager
final String qManager = QManager;
// and define the name of the Queue
final String qName = Q;
// Create a connection to the QueueManager
MQQueueManager qMgr = new MQQueueManager(qManager);
// Now specify the queue that we wish to open and the open options
MQQueue queue = qMgr.accessQueue(qName, MQConstants.MQOO_INQUIRE | MQConstants.MQOO_INPUT_AS_Q_DEF, null, null, null);
// Check the currdepth of the queue
try {
QDepth = queue.getCurrentDepth();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Close the queue
queue.close();
// Disconnect from the QueueManager
qMgr.disconnect();
}
}
JAR :我已经创建了这个 JAVA 的 jar 并将它保存在“C:\ProgramData\IBM\MQSI\shared-classes”中
错误:
BIP2087E: Integration node 'TESTNODE_Dipanjan' was unable to process the internal configuration message.
The entire internal configuration message failed to be processed successfully.
Use the messages following this message to determine the reasons for the failure. If the problem cannot be resolved after reviewing these messages, contact your IBM Support center. Enabling service trace may help determine the cause of the failure.
BIP4041E: Integration server 'default' received an administration request that encountered an exception.
While attempting to process an administration request, an exception was encountered. No updates have been made to the configuration of the integration server.
Review related error messages to determine why the administration request failed.
BIP3202E: (.GetCurrDepth, 1.1) : An error occurred when trying to resolve the Java class or method 'MQDepth.getMQDepth' which is referred to by the routine 'GetCurrDepth'.
Further messages are generated that explain the error in more detail.
Correct the syntax of your Java expression in node '.GetCurrDepth', around line and column '1.1', then redeploy the message flow.
BIP2946E: The Java method 'MQDepth.getMQDepth' could not be found
The Java method 'MQDepth.getMQDepth' with the specified signature could not be found in the specified class. Ensure the method exists in the specified class and that it exactly matches its ESQL signature.
Examine and correct the SQL program.
BIP2871I: The request made by user 'DESKTOP-6BQMC6G\Dipanjan' to 'deploy' the resource 'C:/Users/Dipanjan/IBM/IIBT10/workspace/GeneratedBarFiles/BigOneproject.generated.bar' of type 'BAR' on parent 'default' of type 'ExecutionGroup' has the status of 'FAILED'.
【问题讨论】:
标签: java ibm-integration-bus extended-sql