我使用的是Message Broker 8和MQ 7。当我尝试在消息流中使用映射节点时,我会得到java.lang.RuntimeException.
以下是事件查看器显示的内容:
( BROKER8.default ) The map script generation for QName ''{practica}:CambioFecha'' has failed, with the following details: ''java.lang.RuntimeException: ''.
The generation of the map has failed.
Review and resolve the problems indicated in the message from the map generation.
完整的异常堆栈是:
ExceptionList: ( ['MQROOT' : 0xe052600]
(0x01000000:Name):RecoverableException = (
(0x03000000:NameValue):File = 'F:buildS000_PsrcDataFlowEnginePluginInterfaceImbJniNode.cpp' (CHARACTER)
(0x03000000:NameValue):Line = 1170 (INTEGER)
(0x03000000:NameValue):Function = 'ImbJniNode::evaluate' (CHARACTER)
(0x03000000:NameValue):Type = 'ComIbmMSLMappingNode' (CHARACTER)
(0x03000000:NameValue):Name = 'practica/DATAGRAMA#FCMComposite_1_7' (CHARACTER)
(0x03000000:NameValue):Label = 'practica.DATAGRAMA.Cambio Formato Fecha' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPmsgs' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 2230 (INTEGER)
(0x03000000:NameValue):Text = 'Caught exception and rethrowing' (CHARACTER)
(0x01000000:Name ):RecoverableException = (
(0x03000000:NameValue):File = 'MbErrorHandler.java' (CHARACTER)
(0x03000000:NameValue):Line = 146 (INTEGER)
(0x03000000:NameValue):Function = 'evaluate' (CHARACTER)
(0x03000000:NameValue):Type = '' (CHARACTER)
(0x03000000:NameValue):Name = '' (CHARACTER)
(0x03000000:NameValue):Label = '' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPmsgs' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 3946 (INTEGER)
(0x03000000:NameValue):Text = 'Caught BrokerXCIStaticException' (CHARACTER)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = '{practica}:CambioFecha' (CHARACTER)
)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = 'java.lang.RuntimeException: ' (CHARACTER)
)
(0x01000000:Name ):RecoverableException = (
(0x03000000:NameValue):File = 'MbErrorHandler.java' (CHARACTER)
(0x03000000:NameValue):Line = 310 (INTEGER)
(0x03000000:NameValue):Function = 'throwableToMbException' (CHARACTER)
(0x03000000:NameValue):Type = '' (CHARACTER)
(0x03000000:NameValue):Name = '' (CHARACTER)
(0x03000000:NameValue):Label = '' (CHARACTER)
(0x03000000:NameValue):Catalog = 'BIPmsgs' (CHARACTER)
(0x03000000:NameValue):Severity = 3 (INTEGER)
(0x03000000:NameValue):Number = 3949 (INTEGER)
(0x03000000:NameValue):Text = 'Caught BrokerXCIStaticException' (CHARACTER)
(0x01000000:Name ):Insert = (
(0x03000000:NameValue):Type = 5 (INTEGER)
(0x03000000:NameValue):Text = 'java.lang.RuntimeException:
' (CHARACTER)
)
)
)
)
)
整个消息流运行良好。所以,我认为这不是映射节点的错误。另一个细节是,在其他流中,映射节点根本不起作用,并给出相同的错误。我不知道问题出在哪里。可能是JRE错误?
知道吗?
谢谢!
Josué
这很可能是由于64位机器上的Java堆很大,因为所有引用都大4个字节。为了让它发挥作用,你可以简单地在32位代理上运行它,或者尝试以下任何一种方法-
- 使用Xcompressedrefs(关于它的解释在这里-
http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=%2Fcom.ibm.java.doc.diagnostics.60%2Fdiag%2Funderstanding%2Fmm_compressed_references.html)
a) 在代理提示中执行以下命令
mqsichangeproperties--代理名称--e--EG名称--oComIbmJVMManager-n jvm SystemProperty-v\"-Xcompressedrefs\">
b)验证JVM选项是否已成功应用
mqsireportproperties--代理名称--e--EG名称--oComIbmJVMManager-n jvm系统属性
系统应显示-
-X压缩数据
c) 重新启动执行组
- 增加JVM内存,默认为256MBa) 执行以下命令
mqsichangeproperties--代理名称--e--EG名称--oComIbmJVMManager-n jvm MaxHeapSize-v 536870912
b)验证JVM选项是否已成功应用
mqsireportproperties--代理名称--e--EG名称--oComIbmJVMManager-n jvm最大堆大小
c)重新启动执行组
希望这能帮助