[jboss-dev] On demand JCA and JTA for the web-profile

Carlo de Wolf cdewolf at redhat.com
Tue May 5 08:03:38 EDT 2009


Adrian Brock wrote:
> On Tue, 2009-05-05 at 13:07 +0200, Carlo de Wolf wrote:
>   
>> Ales Justin wrote:
>>     
>>> I'll have a crack at this.
>>>
>>> Adrian, what did you mean under:
>>>
>>>       
>>>> * The abilitiy to make the object bound into jndi
>>>> aop remoteable
>>>>         
>> That path leads to the AOPDispatcher singleton and we don't want to have 
>> singletons in MC.
>>
>>     
>
> Its only a singleton within AOP. As long as the name used to bind
> the remote object into the dispatcher is unique it doesn't matter.
>
>   
>> I would rather see the usage of ejb3-remoting2. Which can basically make 
>> anything remotable.
>> And bind not the remotable ref by itself, but rather a ref via 
>> ObjectFactory and make the remotable ref reference that one. Then you've 
>> solved the bind remotable MC into JNDI problem.
>>     
>
> The actualy mechanism should be an implementation detail, 
> if it is done properly.
>
> The important part is that it should be an "aspect" not done 27
> different ways in 27 different projects.
>
> All you should have to do is something like:
>
> <bean ...>
>    <annoation>@org.jboss.naming.JNDI(binding="/foo/bar",
> remotable="true", remoteInterfaces={...})</annotation>
>   
Hehe, remotable is also an aspect. :-)
For example I could remote it via Remoting2, Remoting3, Agnostic, RMI, etc.
The binding name in the end determines the remoting protocol.
More importantly it also determines local v.s. remote semantics of a 
call. e.g. pass by ref or pass by value.
> The implementation detail is binding some lifecycle handler
> to the @JNDI annotation. What it does can change as required
> (including nothing if that's what you want :-)
>   
So you don't want to suddenly change the call semantic.

That's why I would rather see it stacked, in the likes of:
@JNDI(binding="/foo/bar", interfaces={...})
@JNDIFacade(binding="/foo/bar2", factory=Remoting2Factory.class, 
interfaces={...}, delegateBinding="/foo/bar")

(needs work to make it more friendly)

or in EJB3 style:
@JNDI("bean/endpoint")
@Local(MyInterface.class)
@LocalBinding(jndiBinding="bean/local")
@Remote(MyRemoteInterface.class)
@RemoteBinding(factory="SomeFactory", jndiBinding="bean/remote")
>   
>> If you want to see a lazy MC bound into JNDI in action, see 
>> ejb3-nointerface.
>>
>> The most important thing and change is that you must have an interface 
>> to make stuff remotable, which flies against the MC POJO model.
>>
>>     
>
> That's not true of AOP remoting. It doesn't need an interface but
> there are some less strict constraints, e.g. the class can't be final.
>   
- must have an empty constructor
- all fields must be serializable
- should not do anything funky during construction
Basically all limitations of a no-interface EJB 3.1 view, which is only 
usable locally.

So while true that it doesn't an interface, in practice I don't 
recommend a no-interface approach.

Carlo
>   
>> Carlo
>>     
>>>> * The on-demand processing I described.
>>>>         
>>> You mean that the default ObjectFactory
>>> takes OnDemand into an account?
>>>
>>> Adrian Brock wrote:
>>>       
>>>> On Fri, 2008-11-14 at 15:20 +0100, Ales Justin wrote:
>>>>         
>>>>>> I want to provide an @JNDI annotation similar to the @JMX
>>>>>> lifecycle to make this easier for developers.
>>>>>>
>>>>>> This will be important if we ever get around to
>>>>>> changing our naming contexts to read-only since we
>>>>>> can just change the @JNDI aspect to use the new
>>>>>> mechansim for binding to jndi.
>>>>>>             
>>>>> How does this compare with what we already have:
>>>>>   - 
>>>>> http://anonsvn.jboss.org/repos/jbossas/projects/microcontainer/trunk/aop-mc-int/src/main/java/org/jboss/aop/microcontainer/aspects/jndi/ 
>>>>>
>>>>>           
>>>> I didn't know it existed. :-)
>>>>
>>>> The obvious things that are missing is are:
>>>>
>>>> * The on-demand processing I described.
>>>>
>>>> * whether the object should be bound using the
>>>> NonSerializableObjectFactory or can be bound directly.
>>>>
>>>> * What custom ObjectFactory should be used if the binding
>>>> implements Referenceable
>>>>
>>>> * The abilitiy to make the object bound into jndi
>>>> aop remoteable
>>>>
>>>>         
>>>>> _______________________________________________
>>>>> jboss-development mailing list
>>>>> jboss-development at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/jboss-development
>>>>>           
>>> _______________________________________________
>>> jboss-development mailing list
>>> jboss-development at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/jboss-development
>>>       
>> _______________________________________________
>> jboss-development mailing list
>> jboss-development at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/jboss-development
>>     




More information about the jboss-development mailing list