[Design of JBoss jBPM] - Re: Another potential enhancement to jbpm
by argo516
Using JMS requires JMS provider which not everybody wants to use. Especially if your application doesn't already use it. For example in our scenario (a distributed application) this would require setting up a central broker, something like ActiveMQ or WebSphere MQ, etc. Obviously, this is a lot of overhead for just getting timers to work.
As for my proposal, there's nothing proprietary about it - it simply involves making changes to the SchedulerThread to use proper DB locking (for example using LockMode.UPGRADE_NOWAIT before executing the timer). This will prevent multiple hosts from picking up the same Timer.
As to the runtime - I was simply referring to JBPM engine. Instead of relying on servlet.init() to kick start SchedulerServlet, which will only work in J2EE environments, I propose having jbpm itself start the thread. For example, when JbpmConfiguration is initialized it can start the thread. This is not a big deal for us, I was just making a comment since I'm sure there are people who do not run JBPM in J2EE environment.
Hope this makes more sense.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4121977#4121977
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4121977
18 years, 2 months
[Design of JBoss Remoting, Unified Invokers] - Request headers must die
by david.lloyd@jboss.com
OK, so a while back we decided that it would be a good idea for requests to contain headers that can be mapped to the headers of the underlying protocol.
Now that I'm actually implementing said protocols (HTTP at the moment), it's becoming clear that there is *no* reason to impose a 1:1 correspondence between Remoting requests and requests within the underlying protocol; in fact there are many reasons not to (at least within HTTP).
First of all, due to the relatively high overhead of HTTP, it is much more effective to send multiple messages in one request or reply; especially since messages may be quite small individually. This of course is impossible if a single Remoting request demands a single HTTP request.
Second, not all Remoting messages correspond to requests. Many messages, such as stream data, or service location messages, can vary in size and frequency as well.
Third, in the presence of any protocol in which there are multiple possible channels operating in parallel, it is harder to maintain ordering constraints (in other words, guarantee that message B is processed after message A) when every message must be sent separately, possibly over different connections. When a series of messages are all sent together in a single request, ordering is guaranteed for that group of messages, which will greatly improve latency.
Fourth, the actual payload of a Remoting message is a black-box to users. The user cannot reliably perform any higher-level routing or other message manipulation on a finer level than a per session basis anyway. So there's no real benefit to putting extra data outside of the Remoting request itself.
Comments?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4121970#4121970
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4121970
18 years, 2 months