tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Blevins <david.blev...@visi.com>
Subject Re: Using Stateless Bean as WebService and Remote Interface Both
Date Sun, 12 Apr 2009 20:33:55 GMT

On Apr 12, 2009, at 1:38 PM, Bharath Ganesh wrote:

> What does the expert group say on this? I feel this should be  
> allowed in the
> spec, and currently for EJB 3.0 the container could be spec-lenient  
> on this
> with a flag. It is the responsibility of the application developer  
> to be
> aware of the fact that it could break if the arguments and return  
> types are
> not compliant to both the views, as in the case of EJB 3.1 no- 
> interface
> views.
> While I was at Pramati, implementing JSR 109 and EJB 3.0 for Pramati  
> Java EE
> Server [1], we decided to support this feature.

It's still in discussion.  Regardless it's definitely something we can  
support.  I've never liked the local + remote restriction either and  
this is a good time to add that support as well.  IMO, you should be  
able to expose an interface using as many "views" as you wish provided  
you are willing to maintain compliance with all the views you use.

I partially implemented this when the thread first came up.  I got all  
the way through the annotation scanning and deploy process, added a  
flag to toggle it on/off, but stopped when it became clear we'd need  
to change the method signature of the RpcContainer.invoke(...) method  
which is sort of sacrosanct.  It should just be a bit more work to  
finish it, but will require some changes in our Geronimo and CXF  
integrations.

-David


>
>
> [1] http://server.pramati.com
>
> Thanks,
> Bharath
>
> On Sat, Mar 28, 2009 at 6:58 AM, David Blevins  
> <david.blevins@visi.com>wrote:
>
>>
>> On Mar 27, 2009, at 7:36 AM, Nitin Gupta wrote:
>>
>>
>>> I want to use Stateless EJB Bean to be used both as web-service  
>>> and also
>>> using remote interface.
>>>
>>> when i define EJB as a service-endpoint then then it can be used  
>>> only as a
>>> web-service. when i invoking this EJB through Remote interface i am
>>> getting
>>> this Error :-
>>>
>>> Exception in thread "main" javax.ejb.EJBException: The bean  
>>> encountered a
>>> non-application exception; nested exception is:
>>>       java.lang.IllegalArgumentException: WebService calls must  
>>> follow
>>> format
>>> {messageContext, interceptor, [arg...]}.
>>>       at
>>>
>>> org 
>>> .apache 
>>> .openejb 
>>> .client 
>>> .EJBInvocationHandler.convertException(EJBInvocationHandler.java: 
>>> 219)
>>>       at
>>>
>>> org 
>>> .apache 
>>> .openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:162)
>>>       at
>>>
>>> org 
>>> .apache 
>>> .openejb 
>>> .client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:117)
>>>       at
>>>
>>> org 
>>> .apache 
>>> .openejb 
>>> .client 
>>> .proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52)
>>>
>>> please advice me ...
>>>
>>
>> Hi Nitin,
>>
>> This has come up a couple times this month:
>>
>>
>> http://www.nabble.com/Re%3A-lose-remote-interface-when-creating-web-service-annotation-p22380170.html
>>
>> (this one shows a spec compliant workaround)
>>
>> http://www.nabble.com/User-Blog%3A-Using-OpenEJB-for-EJB3-testing-with-Maven2-to22323088.html
>>
>> Pascal, Howard, Nitin,
>>
>> I've brought this up on the EJB 3.1 Expert Group.  If this is a  
>> feature
>> you're using now in another server, let me know what platform that  
>> is.  It
>> will be a big help in possibly getting this supported at the spec  
>> level.
>>
>> -David
>>
>>


Mime
View raw message