Hi,

I am trying to do something I have neglected for some time now. That is to hook 
in a CommonJ (WebSphere AS) thread pool for core camel features (JMS and 
Servlet stuff is working is just fine but I like to have the async. core 
features in managed threads as well).

So I actually read up a bit on this one. I've been fiddling around with Mr 
Preben's tryout (https://github.com/pax95/camel-commonj) a bit. It looks pretty 
good although there is some final touch needed.

However, in the new versions of Camel, the interface has changed from 
ExecutorServiceStrategy to ExecutorServiceManager, so camel-commonj has to be 
"ported" to the new interface. When starting, I realised that large portions of 
the code was shared with DefaultExecutorServiceStrategy (even though Prebens 
class derives from the Deafult class, private declarations prevents reuse to 
some extent). My approach is to try to do the implementation in the newer 
ThreadPoolFactory interface rather than to rewrite the entire 
ExecutorServiceManager interface. Actually, this is the documented approach.

ThreadPoolFactory
newCachedThreadPool(ThreadFactory threadFactory)
newScheduledThreadPool(ThreadPoolProfile profile, ThreadFactory threadFactory)
newThreadPool(ThreadPoolProfile profile, ThreadFactory threadFactory)
Now to my question.

The agrument to these methods I need to implement is a ThreadFactory which 
essentially just have one method "Thread newThread(Runnable r)". A look in the 
source reviels that what's actually passed is an instance of a 
CamelThreadFactory configured with name, pattern and daemon flag.

public CamelThreadFactory(String pattern, String name, boolean daemon)

Those arguments is what I need to create the thread pool. I need to create the 
thread name, but that is a later problem which is easier to solve). The 
information is there, but not in any way reachable. If I could assume that only 
CamelThreadFactory was passed in this case (which I can assume in the current 
code base, at least), then in theory I could use some reflection hacking to get 
the private parameters, but that does not at all feel good.

So, has anyone actually used the ThreadPoolFactory to jack in Camel threads 
into a Java EE thread pool/work manager before? Any hints how to come around 
the above "limits"?

Any help at all is appreciated.

Best Regards
Petter Nordlander






Reply via email to