-
15. Re: EJB3 JCA/JMS Integration
adrian.brock Dec 12, 2005 6:24 PM (in response to adrian.brock)"bill.burke@jboss.com" wrote:
"scott.stark@jboss.org" wrote:
So let's ditch the ASF stuff in favor of jca inflow abstraction, including as the default MDB 2.1 container in 4.x. Is this something that should be a critical task for 4.0.4?
ignorant question, doesn't HA-JMS depend on ASF? Or can we write a JCA adapter around ASF?
HAJMS just relies on the automatic reconnect handled by the ExceptionListener.
This is internal to the JMS Rar without ASF, since error handling/recovery is a domain specific problem. -
16. Re: EJB3 JCA/JMS Integration
adrian.brock Dec 12, 2005 6:28 PM (in response to adrian.brock)"bill.burke@jboss.com" wrote:
Or can we write a JCA adapter around ASF?
That is what the JMS inbound rar is trying to do. Except without the four levels
of useless of indirection and an implementation that you actually change. :-) -
17. Re: EJB3 JCA/JMS Integration
adrian.brock Dec 12, 2005 6:53 PM (in response to adrian.brock)The other issue is adding metrics/management
and other jca inbound QOI (quality of implementation)
such as doing a JAAS login before invoking the mdb.
This should be done via interceptors inside the proxy/MessageEndpoint.
This is currently impossible with the EJB3 version since it is just an invocation handler
behind a java.lang.reflect.Proxy. -
18. Re: EJB3 JCA/JMS Integration
kabirkhan Dec 13, 2005 6:41 AM (in response to adrian.brock)"adrian@jboss.org" wrote:
I currently use a prototype ProxyAdvisor although Kabir is supposed to have
done some work on (or replaced?) the AOP instance advisors recently.
Yes, this is available in the new weaving in AOP 2.0. Once you guys have battled out which version of the aop proxy to be used, adding this to a proxy based solution should be straightforward. -
19. Re: EJB3 JCA/JMS Integration
adrian.brock Dec 13, 2005 12:25 PM (in response to adrian.brock)"kabir.khan@jboss.com" wrote:
"adrian@jboss.org" wrote:
I currently use a prototype ProxyAdvisor although Kabir is supposed to have
done some work on (or replaced?) the AOP instance advisors recently.
Yes, this is available in the new weaving in AOP 2.0. Once you guys have battled out which version of the aop proxy to be used, adding this to a proxy based solution should be straightforward.
Does it support handling all the internal "book-keeping" with injection of overrides
like org.jboss.proxy or my prototype ProxyAdvisor.
NOTE: My ProxyAdvisor prototype does not handle "MetaData"
like the "context" in org.jboss.proxy/** Create a composite proxy for the given interfaces, invoker. @param id the cache id for the target object if any @param targetName the name of the server side service @param invoker the detached invoker stub to embed in the proxy @param jndiName the JNDI name the proxy will be bound under if not null @param proxyBindingName the invoker-proxy-binding name if not null @param interceptorClasses the Class objects for the interceptors @param loader the ClassLoader to associate the the Proxy @param ifaces the Class objects for the interfaces the Proxy implements @param ctx any context to add the invocation context proxy */ public Object createProxy(Object id, ObjectName targetName, Invoker invoker, String jndiName, String proxyBindingName, ArrayList interceptorClasses, ClassLoader loader, Class[] ifaces, HashMap ctx) {
e.g. What I would really like a is
ProxyFactory
interface that could use either org.jboss.proxy or org.jboss.aop
depending on the version the user is installed in.
With the interceptor/metadata really coming more generic configuration
like aop's domain scoped crosscutting declarations or EJB2.x's container-configurations. -
20. Re: EJB3 JCA/JMS Integration
adrian.brock Dec 13, 2005 12:26 PM (in response to adrian.brock)Can we start a different thread for the Proxy impl.
Although I think there already is one in the AOP forum. :-) -
21. Re: EJB3 JCA/JMS Integration
bill.burke Dec 13, 2005 12:45 PM (in response to adrian.brock)"adrian@jboss.org" wrote:
Does it support handling all the internal "book-keeping" with injection of overrides
like org.jboss.proxy or my prototype ProxyAdvisor.
NOTE: My ProxyAdvisor prototype does not handle "MetaData"
like the "context" in org.jboss.proxy
Not sure what you mean, but the new AOP 2.0 design basically has every instance is allowed to have its own Aspect Domain, so anything that you can add to a class can be done at the instance level except introductions. (metadata, annotations, bindings). For introductions on a per-instance basis, we'll do this with a proxy. I had prototyped this with the aop/mc integration.
The only thing I worry about this model is that it can become quite heavy to serialize with a remote proxy. EJB3 proxies are a bit lighter and accept an interceptor stack instead./** Create a composite proxy for the given interfaces, invoker. @param id the cache id for the target object if any @param targetName the name of the server side service @param invoker the detached invoker stub to embed in the proxy @param jndiName the JNDI name the proxy will be bound under if not null @param proxyBindingName the invoker-proxy-binding name if not null @param interceptorClasses the Class objects for the interceptors @param loader the ClassLoader to associate the the Proxy @param ifaces the Class objects for the interfaces the Proxy implements @param ctx any context to add the invocation context proxy */ public Object createProxy(Object id, ObjectName targetName, Invoker invoker, String jndiName, String proxyBindingName, ArrayList interceptorClasses, ClassLoader loader, Class[] ifaces, HashMap ctx) {
e.g. What I would really like a is
ProxyFactory
interface that could use either org.jboss.proxy or org.jboss.aop
depending on the version the user is installed in.
With the interceptor/metadata really coming more generic configuration
like aop's domain scoped crosscutting declarations or EJB2.x's container-configurations. -
22. Re: EJB3 JCA/JMS Integration
adrian.brock Dec 13, 2005 12:56 PM (in response to adrian.brock)"bill.burke@jboss.com" wrote:
"adrian@jboss.org" wrote:
Does it support handling all the internal "book-keeping" with injection of overrides
like org.jboss.proxy or my prototype ProxyAdvisor.
NOTE: My ProxyAdvisor prototype does not handle "MetaData"
like the "context" in org.jboss.proxy
Not sure what you mean, but the new AOP 2.0 design basically has every instance is allowed to have its own Aspect Domain, so anything that you can add to a class can be done at the instance level except introductions. (metadata, annotations, bindings). For introductions on a per-instance basis, we'll do this with a proxy. I had prototyped this with the aop/mc integration.
Yes.
But it didn't do what I mentioned above. The user was still left
doing all the invocation construction and linking context when this should just
be declared at "proxy" construction or externally described using AOP
declarations in the domain.
This is what I call the "book-keeping".
The only thing at the time that allowed "introductions" was the javassist
generated proxy stuff which didn't allow interceptors on the introduction
or for an interceptor to be applied on both the main class and the introduction.
I noticed Kabir has been doing some work on this as well :-) -
23. Re: EJB3 JCA/JMS Integration
adrian.brock Jun 22, 2006 7:53 AM (in response to adrian.brock)I've closed this bug report:
http://jira.jboss.com/jira/browse/JBAS-3327
Don't report bugs for the JCA/JMS people to fix until
the integration issues raised here have been resolved.
We only fix bugs in code we support.
If think you have a bug in JCA/JMS integration, the correct place
to write a testcase is
org.jboss.test.messagedriven.test.*
in the main testsuite. -
24. Re: EJB3 JCA/JMS Integration
bdecoste Jun 22, 2006 10:34 AM (in response to adrian.brock)I've been assigned the task of refactoring the EJB3 MDBs to exclusively use RARs. Earlier this week I checked in the 1st stage of these changes, but work is still in progress - MDBs are using the JMS RAR and no longer doing any of their own pooling. E-EJB3 via JMS RAR enabled MDBs is also working
See http://jira.jboss.com/jira/browse/EJBTHREE-589
The current problem is that when we specify maxSessions=1 in the JMS activation spec, there are multiple WorkWrapper threads that handle each message. The current mechanism for creating MDB instances is through a ThreadLocal, so even though we specify maxSessions=1, we see multiple threads handling the messages, so we are creating multiple MDB instances when there should only be 1. I've been working with Weston on this. -
25. Re: EJB3 JCA/JMS Integration
adrian.brock Jun 22, 2006 10:37 AM (in response to adrian.brock)"EJB3" dependening on the "connector" module is bogus.
Even "server" which is the integration project for AppServer
doesn't do that.
This integration is becoming even more of a mess.
Integrartion is:
user -> api/spi
NOT
user -> implementation details -
26. Re: EJB3 JCA/JMS Integration
adrian.brock Jun 22, 2006 10:43 AM (in response to adrian.brock)And EJB3 shouldn't be defining the integration anyway.
Make an integration point and then let people implement it
independently.
Tying the two together just leads to lots of problems like
1) too tightly coupled projects that must be developed/maintained in-sync
2) the consumed project (in this case JCA) doesn't know how it is being
used because the tests of functionality are in the EJB3 project not the
JCA project
3) use of things that happen to be public but were never intended
to be used externally, they are implementation details that are subject
to change without detail. -
27. Re: EJB3 JCA/JMS Integration
adrian.brock Jun 22, 2006 10:43 AM (in response to adrian.brock)If you don't see why this is a problem,
imagine how your code will work when we switch from
the "connector" project to the new "jca" project. -
28. Re: EJB3 JCA/JMS Integration
bill.burke Jun 22, 2006 11:14 AM (in response to adrian.brock)"adrian@jboss.org" wrote:
"EJB3" dependening on the "connector" module is bogus.
Even "server" which is the integration project for AppServer
doesn't do that.
This integration is becoming even more of a mess.
Integrartion is:
user -> api/spi
NOT
user -> implementation details
"server" wasn't dependent on connector because it was making raw untype JMX invocations. These raw JMX invocations *suck* and are very hard to maintain.
You need to be able to get the MessageEndpointFactory and for that there needs to be an API. -
29. Re: EJB3 JCA/JMS Integration
bill.burke Jun 22, 2006 11:17 AM (in response to adrian.brock)"adrian@jboss.org" wrote:
I've closed this bug report:
http://jira.jboss.com/jira/browse/JBAS-3327
Don't report bugs for the JCA/JMS people to fix until
the integration issues raised here have been resolved.
We only fix bugs in code we support.
If think you have a bug in JCA/JMS integration, the correct place
to write a testcase is
org.jboss.test.messagedriven.test.*
in the main testsuite.
I don't want Bill held up until some "brainiac" discovers his holy grail SPI interface. Iterate. I'm sick of everything having to be perfect for you guys before we can do anything.