在开发过程中出现了"发现运行时会报错误, Object is not a primitive: "的异常,开始以为该实体对象没有实现序列化,打开实体看后,发现已经实现了,后来发现是在MQ的配置中,将实体写入到数据库才会出现这个异常,如果不写入到数据库,则不会;配置如下:
<amq:broker useJmx="false" persistent="true">
<amq:persistenceAdapter>
<amq:jdbcPersistenceAdapter id="jdbcAdapter"
dataSource="#dataSource" createTablesOnStartup="true"
useDatabaseLock="false" />
<!-- Mysql can setup useDatabaseLock="true",this is defualt HSQLDB,MSSQL
plz setup useDatabaseLock="false", if u setup useDatabaseLock="true",u will
catch error: MSSQL Error Info:FOR UPDATE clause allowed only for DECLARE
CURSOR HSQLDB Error Info:FOR in statement [SELECT * FROM ACTIVEMQ_LOCK FOR
UPDATE] see http://www.nabble.com/ActiveMQ-JDBC-Persistence-with-SQL-Server-tf2022248.html#a5560296 -->
</amq:persistenceAdapter>
<amq:transportConnectors>
<amq:transportConnector uri="tcp://localhost:0" />
</amq:transportConnectors>
</amq:broker>
解决方法为:改写MessageConverter类中的实现方法,通过ObjectOutputStream流来进行处理!方法如下:
public Message toMessage(Object obj, Session session) throws JMSException {
// check Type
if (obj instanceof IPAddressInfo) {
ActiveMQObjectMessage objMsg = (ActiveMQObjectMessage) session
.createObjectMessage();
Map<String, byte[]> map = new HashMap<String, byte[]>();
byte[] bytes = null;
ByteArrayOutputStream buf = null;
ObjectOutputStream o = null;
try {
buf = new ByteArrayOutputStream();
o = new ObjectOutputStream(buf);
o.writeObject(obj);
bytes = buf.toByteArray();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (o != null) {
try {
o.flush();
o.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (buf != null) {
try {
buf.flush();
buf.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
map.put("Order", bytes);
objMsg.setObjectProperty("Map", map);
return objMsg;
} else {
throw new JMSException("Object:[" + obj + "] is not Order");
}
}
/*
* (non-Javadoc)
*
* @see
* org.springframework.jms.support.converter.MessageConverter#fromMessage
* (javax.jms.Message)
*/
public Object fromMessage(Message msg) throws JMSException {
if (msg instanceof ObjectMessage) {
if (msg != null) {
Object obj = null;
byte[] bytes = (byte[]) ((Map) ((ObjectMessage) msg)
.getObjectProperty("Map")).get("Order");
ObjectInputStream in = null;
try {
in = new ObjectInputStream(new ByteArrayInputStream(bytes));
obj = in.readObject();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return obj;
}
}
return msg;
}
分享到:
相关推荐
$ npm install --save is-primitive 原始值 定义了六种基本类型的数据类型: Boolean Null Undefined Number String Symbol (ECMAScript 6中的新增功能) 用法 var isPrimitive = require ( 'is-primitive' )...
could not execute:bad executable format(win32 error 193) 下了一个实现MD5的代码,编译时没有错误,但是执行的时候却提示:could not execute:bad executable format(win32 error 193)
盒装原语 节点util.isBoxedPrimitive() Polyfill / shim 例子 var isBoxedPrimitive = require ( 'is-boxed-primitive' ) ;... // primitive form is not boxed if ( v != null ) { assert ( isBoxedPr
var isBoolean = require ( 'validate.io-boolean-primitive' ) ; isBoolean( 值 ) 验证value是否为boolean元。 var value = false ; var bool = isBoolean ( value ) ; // returns true 例子 var isBoolean = ...
此模块可以跨领域/ iframe运行,不依赖于instanceof或可变属性,并且可以使用ES6 Symbol.toStringTag进行工作。例子var unboxPrimitive = require ( 'unbox-primitive' ) ;var assert = require ( 'assert' ) ;...
$ npm install validate.io-nan-primitive 要在浏览器中使用,请使用 。 用法 var isnan = require ( 'validate.io-nan-primitive' ) ; isnan( 值 ) 验证value是否为NaN原语。 var value = NaN ; var bool = ...
var isPositive = require ( 'validate.io-positive-primitive' ) ; isPositive(value) 验证value是否为正number原语。 var value = Math . PI ; var bool = isPositive ( value ) ; // returns true 例子 ...
用法 var isInteger = require ( 'validate.io-integer-primitive' ) ;isInteger( 值 ) 验证值是否是number原语,不包括NaN和integer 。 var bool = isInteger ( 3 ) ;// returns true例子 var isInteger = require ...
向导/步进器的零依赖支架,没有任何UI限制。 钩子和渲染道具API可用!将向导拆分为多个组件建立自己的抽象原料药Step useWizard 例子useWizardStep 例子... 快速开始安装react-wizard-primitive npm i react-wizard-pr
Build sophisticated web applications by mastering the art of Object-Oriented Javascript About This Book Learn popular Object-Oriented programming (OOP) principles and design patterns to build robust ...
* primitive:原型 * reference:引用 * info:信息 * insert:插入 * island:岛 * compare:比较 * ignore:忽略 * triangle:三角 * invert:反转 * diamond:钻石 * password:密码 其他 * document:文件 * ...
总结来说,当遇到`Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'`的错误时,首先要检查是否有在同一个文件中混合使用`import/export`和`require/module.exports`的情况...
nodejs-primitive 这是应用程序的nodejs端口,最初由Michael Fogleman创建(用go编写)。 其目的是复制带有几何图元的图像。 此实现比原始实现慢,但足够快以致可以使用。 这个怎么运作 您可以在原始go app的中找到...
$ npm install validate.io-primitive 要在浏览器中使用,请使用 。 用法 var isPrimitive = require ( 'validate.io-primitive' ) ; isPrimitive(值) 验证value是否为 JavaScript 原语。 var value = true ; ...
用法 var geom = require ( 'primitive-sphere' ) ( )var viewer = require ( 'glo-demo-primitive' )viewer ( geom , { texture : true , // add a simple repeating pattern repeat : [ 8 , 8 ] // UV repeats} ) ...
XPe组件总结 XPE中数据库组件及其描述如下: 序号 组件名称 功能描述 ...8 Primitive: Odbc32 ODBC核心组件 9 Primitive: Odbcint ODBC组件 XPE中EWF组件及其描述如下: 序号 组件名称 功能描述
在使用Proteus进行单片机仿真的过程中,有时可能会遇到“Simulation is not running in real time due to excessive CPU load”的提示,这意味着仿真无法实时运行,主要是由于CPU负载过重导致的。这个问题对于开发者...
在Laravel框架中进行开发时,理解PHP的原始(primitive)数据类型是非常基础且重要的。这些类型构成了所有复杂数据结构的基础,对它们的熟练掌握能帮助开发者更好地编写高效、清晰的代码。本教程将深入探讨PHP中的...
2. **DOM操作**:游戏界面的动态更新通常通过操作Document Object Model (DOM) 实现,JavaScript 可以轻松添加、修改或删除页面元素。 3. **数据存储与交换**:为了实现两个设备间的通信,可能需要利用AJAX或者...