Bug 912653
| Summary: | Clone: Remote JNDI is not working with a HornetQ-only JMS bridge | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | [JBoss] JBoss Enterprise Application Platform 6 | Reporter: | Miroslav Novak <mnovak> | ||||||
| Component: | HornetQ | Assignee: | Yong Hao Gao <hgao> | ||||||
| Status: | CLOSED CURRENTRELEASE | QA Contact: | Martin Svehla <msvehla> | ||||||
| Severity: | high | Docs Contact: | |||||||
| Priority: | unspecified | ||||||||
| Version: | 6.2.0 | CC: | anmiller, ataylor, csuconic, dosoudil, hgao, jmesnil, msvehla, nziakova, rdickens, rsvoboda | ||||||
| Target Milestone: | ER3 | Flags: | lcosti:
needinfo?
|
||||||
| Target Release: | EAP 6.2.0 | ||||||||
| Hardware: | Unspecified | ||||||||
| OS: | Unspecified | ||||||||
| Whiteboard: | |||||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||||
| Doc Text: | Story Points: | --- | |||||||
| Clone Of: | Environment: | ||||||||
| Last Closed: | 2013-12-15 16:15:54 UTC | Type: | Bug | ||||||
| Regression: | --- | Mount Type: | --- | ||||||
| Documentation: | --- | CRM: | |||||||
| Verified Versions: | Category: | --- | |||||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||||
| Embargoed: | |||||||||
| Attachments: |
|
||||||||
|
Description
Miroslav Novak
2013-02-19 10:09:33 UTC
Jeff Mesnil <jmesnil> made a comment on jira AS7-6549 PR merged in master branch Changing status to ON_QA since jira was resolved. Created attachment 717659 [details]
logs and configuration of servers
JMS bridge still could not be started. See configuration and log of both source and target servers in attachment.
Hi Jeff, fix for this issue did not get into EAP 6.1.0.ER3. Could you check with productization guys to where the fix should be committed? Thanks, Mirek Pull request for EAP 6.1.x sent: https://github.com/jbossas/jboss-eap/pull/82 Created attachment 736280 [details]
logs and configuration of servers after fix
It seems that JMS bridge can be now started:
12:38:05,216 INFO [org.jboss.messaging] (ServerService Thread Pool -- 67) JBAS011610: Started JMS Bridge myBridge
However when trying to send messages to source queue producer gets exception:
12:38:30,956 ERROR [org.jboss.qa.hornetq.apps.clients.ProducerClientAck:114] Producer got exception and ended:
org.jboss.naming.remote.protocol.NamingIOException: Failed to lookup [Root exception is java.io.NotSerializableException: org.hornetq.core.client.impl.ClientSessionFactoryImpl]
at org.jboss.naming.remote.client.ClientUtil.namingException(ClientUtil.java:49)
at org.jboss.naming.remote.protocol.v1.Protocol$1.execute(Protocol.java:104)
at org.jboss.naming.remote.protocol.v1.RemoteNamingStoreV1.lookup(RemoteNamingStoreV1.java:79)
at org.jboss.naming.remote.client.RemoteContext.lookup(RemoteContext.java:79)
at org.jboss.naming.remote.client.RemoteContext.lookup(RemoteContext.java:83)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at org.jboss.qa.hornetq.apps.clients.ProducerClientAck.run(ProducerClientAck.java:79)
Caused by: java.io.NotSerializableException: org.hornetq.core.client.impl.ClientSessionFactoryImpl
at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:891)
at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:585)
at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1063)
at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:885)
at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1063)
at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:998)
at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:885)
at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:62)
at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:119)
at org.jboss.naming.remote.protocol.v1.Protocol$1$2.write(Protocol.java:138)
at org.jboss.naming.remote.protocol.v1.WriteUtil.write(WriteUtil.java:61)
at org.jboss.naming.remote.protocol.v1.Protocol$1.handleServerMessage(Protocol.java:128)
at org.jboss.naming.remote.protocol.v1.RemoteNamingServerV1$MessageReciever$1.run(RemoteNamingServerV1.java:73)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: an exception which occurred:
in field factories
in field serverLocator
in object org.hornetq.jms.client.HornetQXAConnectionFactory@7920f96a
It is possible to send messages to the same queue while JMS Bridge is not connected. The exception occurs only when JMS Bridge is started.
See configurations and logs in attachment.
Issue in the previous comment seems to be related to the way how connection factory is deployed and looked up from JNDI. Client and JMS bridge are using the same connection factory. When JMS bridge uses this connection factory first then JMS client gets this NotSerializableException. There are some non-serializable fields that caused the problem. When a JMS bridge is deployed and started and if it uses a local Connection Factory to create connections, the Connection Factory will have such fields stored. When a remote client looks up the same connection factory via JNDI, the factory won't get serialized because of those fields. To workaround the client can use a different Connection Factory. I'll submit the fix soon. Howard It seems that bz was lost from focus. Setting jboss-eap-6.2 flag to ?. @Howard Can you send an update, please? Thanks, Mirek No NotSerializableExceptions anymore. Good job. 'Docs text' field NACK'd as it is too late to include this ticket in release notes without at least draft content. |