-
javax.jms.MessageFormatException: Object cannot be serialized30
在发送Jms消息时候session = m_topicConnection.createTopicSession(false,Session.CLIENT_ACKNOWLEDGE); TopicPublisher sender = session.createPublisher(topic); ObjectMessage om = session.createObjectMessage(myObject);
myObject里我放了一个HashMap, HashMap里放了一个这样的Exception类class GeneralException extends RuntimeException implements GeneralExceptionConstants
这时候在执行到ObjectMessage om = session.createObjectMessage(myObject);
时 报了这样的错:javax.jms.MessageFormatException: Object cannot be serialized
这个类实现的GeneralExceptionConstants已经继承了Serializable 而且这个类里面的子类我也实现了Serializable。 我现在搞不懂为什么还报这个错了, 请问大家有什么好的建议吗 是不是我漏了什么东西。
下面是我这个类的源代码 请有空帮个我看下 感激不尽!
问题补充:fancyboy2050 写道你把报错的堆栈贴上来看看吧,就这样看不出来什么东西。2011-11-14 14:25:03,968;[JMS SessionPool Worker-2];ERROR;Extractor;Problem handling JMS message, rolling back. javax.jms.MessageFormatException: Object cannot be serialized at org.jboss.mq.SpyObjectMessage.setObject(SpyObjectMessage.java:83) at org.jboss.mq.SpySession.createObjectMessage(SpySession.java:306) at com.globalsight.cxe.adaptermdb.BaseAdapterMDB.publishToJMS(BaseAdapterMDB.java:320) at com.globalsight.cxe.adaptermdb.BaseAdapterMDB.onMessage(BaseAdapterMDB.java:242) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.invocation.Invocation.performCall(Invocation.java:345) at org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:475) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185) at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:48) at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:105) at org.jboss.ejb.plugins.AbstractTxInterceptorBMT.invokeNext(AbstractTxInterceptorBMT.java:153) at org.jboss.ejb.plugins.MessageDrivenTxInterceptorBMT.invoke(MessageDrivenTxInterceptorBMT.java:32) at org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor.invoke(MessageDrivenInstanceInterceptor.java:87) at org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:94) at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192) at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122) at org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:389) at org.jboss.ejb.Container.invoke(Container.java:870) at org.jboss.ejb.plugins.jms.JMSContainerInvoker.invoke(JMSContainerInvoker.java:962) at org.jboss.ejb.plugins.jms.JMSContainerInvoker$MessageListenerImpl.onMessage(JMSContainerInvoker.java:1248) at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:256) at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:904) at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:159) at org.jboss.mq.SpySession.run(SpySession.java:351) at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:180) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743) at java.lang.Thread.run(Thread.java:619) 2011-11-14 14:25:03,968;[JMS SessionPool Worker-2];ERROR;Extractor;Problem rolling back: java.lang.IllegalStateException: setRollbackOnly should not be access for user managed Tx at org.jboss.ejb.MessageDrivenEnterpriseContext$MessageDrivenContextImpl.setRollbackOnly(MessageDrivenEnterpriseContext.java:202) at com.globalsight.cxe.adaptermdb.BaseAdapterMDB.onMessage(BaseAdapterMDB.java:271) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.invocation.Invocation.performCall(Invocation.java:345) at org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:475) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185) at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:48) at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:105) at org.jboss.ejb.plugins.AbstractTxInterceptorBMT.invokeNext(AbstractTxInterceptorBMT.java:153) at org.jboss.ejb.plugins.MessageDrivenTxInterceptorBMT.invoke(MessageDrivenTxInterceptorBMT.java:32) at org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor.invoke(MessageDrivenInstanceInterceptor.java:87) at org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:94) at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192) at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122) at org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:389) at org.jboss.ejb.Container.invoke(Container.java:870) at org.jboss.ejb.plugins.jms.JMSContainerInvoker.invoke(JMSContainerInvoker.java:962) at org.jboss.ejb.plugins.jms.JMSContainerInvoker$MessageListenerImpl.onMessage(JMSContainerInvoker.java:1248) at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:256) at org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:904) at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:159) at org.jboss.mq.SpySession.run(SpySession.java:351) at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:180) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743) at java.lang.Thread.run(Thread.java:619)
下面的rollback是catch到exception之后试图rollback报的错 应该关系不大
问题补充:lettoo 写道在对可序列化类中的属性进行序列化时,如果遇到不可序列化的对象变量,此时会针对不可序列化的类抛出NotSerializableException异常
public String getMessage(Locale p_uiLocale) { // Old stuff. Should be removed once old codes are removed. if (m_messageId != DEFAULT_MSG_ID) { ResourceBundle resourceBundle = SystemResourceBundle.getInstance() .getResourceBundle( ResourceBundleConstants.EXCEPTION_RESOURCE_NAME, p_uiLocale);
ResourceBundle 这个类是不是能够序列化?
ResourceBundle是java.util.ResourceBundle,不好控制吧。ResourceBundleConstants和SystemResourceBundle我都继承或实现了Serializable 还是不管用
问题补充:lettoo 写道at com.globalsight.cxe.adaptermdb.BaseAdapterMDB.publishToJMS(BaseAdapterMDB.java:320) 6. at com.globalsight.cxe.adaptermdb.BaseAdapterMDB.onMessage(BaseAdapterMDB.java:242)
看椎栈显示是在这个地方出错。应该是将Object转成JMS message的时候出错了。
对啊 就是这里ObjectMessage om = session.createObjectMessage(myObject);
就是因为这个myObject的HashMap里多加了这个GeneralException才报错的 不加就没问题2011年11月14日 13:42
6个答案 按时间排序 按投票排序
-
Exception类本身就不支持序列化。
父类不支持序列化,子类只是简单地实现Serializable接口是没用的。
如果真有必要序列化,必须重写writeObject,readObject方法。
具体怎么做可以去看effective java。2011年11月15日 16:52
-
如果确认是因为添加了GeneralException才导致报错的,楼主可以试着用排除法测试下,先精简下GeneralException对象,先做成一个最简单的对象传递试试,然后一点一点试。
2011年11月14日 18:16
-
at com.globalsight.cxe.adaptermdb.BaseAdapterMDB.publishToJMS(BaseAdapterMDB.java:320) 6. at com.globalsight.cxe.adaptermdb.BaseAdapterMDB.onMessage(BaseAdapterMDB.java:242)
看椎栈显示是在这个地方出错。应该是将Object转成JMS message的时候出错了。2011年11月14日 14:42
-
在对可序列化类中的属性进行序列化时,如果遇到不可序列化的对象变量,此时会针对不可序列化的类抛出NotSerializableException异常
public String getMessage(Locale p_uiLocale) { // Old stuff. Should be removed once old codes are removed. if (m_messageId != DEFAULT_MSG_ID) { ResourceBundle resourceBundle = SystemResourceBundle.getInstance() .getResourceBundle( ResourceBundleConstants.EXCEPTION_RESOURCE_NAME, p_uiLocale);
ResourceBundle 这个类是不是能够序列化?2011年11月14日 14:22
相关推荐
javax.jms.MessageFormatException.class javax.jms.IllegalStateException.class javax.jms.JMSSecurityException.class javax.jms.ResourceAllocationException.class javax.jms.TransactionInProgressException....
javax.jms.MessageFormatException.class javax.jms.MessageListener.class javax.jms.MessageNotReadableException.class javax.jms.MessageNotWriteableException.class javax.jms.MessageProducer.class javax....
javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed; boundary="----=_Part_0_1760344884.1407394057461" 第一步:需要先grantq权限: EXEC dbms_java.grant_...
`javax.jms-1.1.jar` 是一个Java Message Service(JMS)的API库,它属于Java标准版(Java Standard Edition, Java SE)的一部分。JMS是Java平台上的一个规范,用于在分布式环境中进行异步消息传递。这个库主要用于...
javax.naming.NamingException: Cannot create resource instance类加载异常,希望可以帮助跟我一样错误的人。
内含javax.jms-1.1.jar 安装包下载以及Maven手动安装命令 Maven官方仓库下载不下来资源,只能手动安装 <!-- https://mvnrepository.com/artifact/javax.jms/jms --> <groupId>javax.jms <artifactId>jms ...
这里我们关注的是两个特定的JAR文件:`javax.jms.jar`和`servlet-api.jar`,它们分别与Java消息服务(Java Message Service,JMS)和Java Servlet API相关。 **Java消息服务(JMS)**是Java平台上的一个标准接口,...
`javax.jms.jar` 包是实现JMS规范的核心库,包含了JMS接口和实现类,使得开发者可以轻松地在Java应用程序中集成消息服务。 JMS主要包含两种消息模型:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe...
在Java编程环境中,图片处理是一项常见的任务,但有时可能会遇到“javax.imageio.IIOException: Unsupported Image Type”的错误。这个异常通常表示Java的`ImageIO`类库无法识别或支持所尝试读取或写入的图像格式。...
赠送jar包:javax.servlet-3.0.0.v201112011016.jar; 赠送原API文档:javax.servlet-3.0.0.v201112011016-javadoc.jar; 赠送源代码:javax.servlet-3.0.0.v201112011016-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:javax.annotation-api-1.3.2.jar; 赠送原API文档:javax.annotation-api-1.3.2-javadoc.jar; 赠送源代码:javax.annotation-api-1.3.2-sources.jar; 赠送Maven依赖信息文件:javax.annotation-api-...
赠送jar包:javax.servlet-3.0.0.v201112011016.jar; 赠送原API文档:javax.servlet-3.0.0.v201112011016-javadoc.jar; 赠送源代码:javax.servlet-3.0.0.v201112011016-sources.jar; 赠送Maven依赖信息文件:...
9. **异常处理**:`javax.jms`包中还包括一系列的异常类,如`JMSException`、`MessageFormatException`、`IllegalStateException`等,这些异常帮助开发者处理在消息传递过程中可能出现的问题。 10. **JMS 1.1规范**...
赠送jar包:javax.mail-1.5.6.jar; 赠送原API文档:javax.mail-1.5.6-javadoc.jar; 赠送源代码:javax.mail-1.5.6-sources.jar; 赠送Maven依赖信息文件:javax.mail-1.5.6.pom; 包含翻译后的API文档:javax.mail...
《深入解析ActiveMQ中的javax.jms源码》 在Java消息服务(Java Message Service,简称JMS)领域,javax.jms是核心API,它定义了应用程序与消息中间件进行交互的一组接口和类。ActiveMQ作为开源的消息中间件,广泛...
javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...
赠送jar包:javax.mail-1.6.2.jar; 赠送原API文档:javax.mail-1.6.2-javadoc.jar; 赠送源代码:javax.mail-1.6.2-sources.jar; 赠送Maven依赖信息文件:javax.mail-1.6.2.pom; 包含翻译后的API文档:javax.mail...
import javax.media.jai.JAI; import javax.media.jai.RenderedOp; jai_core-1.1.3.jar jai_codec-1.1.3.jar
赠送jar包:javax.activation-api-1.2.0.jar; 赠送原API文档:javax.activation-api-1.2.0-javadoc.jar; 赠送源代码:javax.activation-api-1.2.0-sources.jar; 赠送Maven依赖信息文件:javax.activation-api-...
本话题将围绕在Android中使用DES加密和解密时遇到的一个常见问题展开:`javax.crypto.IllegalBlockSizeException: last block incomplete in decryption`。 这个异常通常发生在解密过程中,当输入的数据块大小与DES...