In my application I am using the following flow:
1. I am using Guvnor to allow customer to define business event structure
through the "Declarative Model" feature.
2. After defining the model, customers write rules and package them into
a snapshot where my event-driven-application-server can see.
3. My server load successfully the customer packages (couple hundreds of
them).
4. Customer uses HornetQ client to produce events that respects the model
that has been created using Guvnor.
5. I have HornetQ listeners in my application that listens to new events.
6. HornetQ listeners tries to deserialize the message bytes to an event
object to insert it to the customer ksession
The problem is that my server classloader has no idea about the model, so I
use ASM to inject the class definition when ClassNotFoundException is thrown
however this was not enough as serialVersionUID of client side object is
going to be different from the ASM default injected one.
I know some of you might say why cant I use the same static final
serialVersionUID in the client side as well as in the server side - the
answer is I want to give control to customers to define whatever business
model they want using Guvnor.
Using jar file model will not give freedom to business users that Guvnor
provide.
I am wondering if some of you were facing the same issue while using the
fusion message queue streaming gate?
I am thinking to extend the Java ObjectInputStream and implement my own
deserialization.
Could Drools ksession accept bytes along side with objects (I mean in the
future) - Something like; "ksession.insert(bytes)"
Any ideas?
Abdel
Show replies by date