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: Web services deployment example?
Date Wed, 15 Apr 2009 17:52:34 GMT

On Apr 15, 2009, at 10:12 AM, Laird Nelson wrote:

> On Wed, Apr 15, 2009 at 11:57 AM, David Blevins <david.blevins@visi.com 
> >wrote:
>
>> It definitely does test the "EJB" functionality.
>>
>
> I'm sorry, what I meant was, there is no method in the  
> CalculatorTest.java
> file that does a JNDI lookup against either a @Local or a @Remote  
> interface
> to access a stub for the CalculatorImpl stateless session bean.  You  
> of
> course are correct that on the server side the CalculatorImpl bean  
> does get
> exercised.

Got it.  I misunderstood.

> I am taking away from all of this that for any given interface:
>
>   - It may be marked as a @Local, but not also as @Remote or  
> @WebService
>   - It may be marked as a @Remote, but not also as @Local or  
> @WebService
>   - It may be marked as a @WebService, but not also as @Local or  
> @Remote

Check.

>
>   - Inheritance of these kinds of interfaces poses problems in CXF,
>   apparently, and hence also in OpenEJB.

Correct -- this was news to me as well.  Didn't realize CXF would have  
issues with this.  Not sure if this is a JAX-WS spec thing I'm not  
aware of.

>
>   - In order to expose any kind of client interface to potential  
> clients,
>   one must duplicate the methods in each kind of interface.  That  
> is, one must
>   have a CalculatorLocal @Local interface with its add and mulitply  
> methods, a
>   CalculatorRemote @Remote interface with its (identical) add and  
> multiply
>   methods, and a CalculatorWs @WebService SEI with its (identical)  
> add and
>   multiply methods.

Also correct with the minor caveat that the lack of support for  
inheritance is just in the CXF side of things.  So the "methods must  
be declared in the interface itself" restriction only applies to the  
WS interface.  I've tested this out and it works just fine:

     @WebService(targetNamespace = "http://superbiz.org/wsdl")
     public interface CalculatorWs {

         public int sum(int add1, int add2);

         public int multiply(int mul1, int mul2);
     }

     @Local
     public interface CalculatorLocal extends CalculatorWs {

     }


>   - An implementation (@Stateless) class may implement any or all of  
> these
>   kinds of interfaces depending on the view it wants to expose.

Correct.  Additionally it can have several @Local and @Remote  
interfaces, though just one @WebService interface.

> I am *really* sorry to be so thick and slow on all of this and I  
> appreciate
> the help I've been given.

This has been a great thread -- been loving it.  I think we've all  
learned a few things.  I certainly had no idea CXF would choke on  
inheritance and can think of a few times I've advised inheritance for  
WS interfaces not knowing it wouldn't work with CXF.  Wish this  
discussion had happened sooner! :)

-David


Mime
View raw message