Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
4.7.0
-
None
Description
From the mailing list:
OK. One last small-brained question.
In the simple-webservice example that ships with OpenEJB 3.1, the interface
(CalculatorWs) is annotated with @WebService (and nothing else), and the
implementation (CalculatorImpl) is annotated *both *with @Stateless *and *
@WebService, and implements CalculatorWs. The associated test passes (
CalculatorTest)--and it only tests the web service functionality, not the
EJB functionality.
It's my understanding that in EJB 3.0 if you don't explicitly mark any
business interface as being either @Remote or @Local, it defaults to @Local,
so if you did nothing other than mark the implementation class as @Stateless,
you would be implicitly "marking" the interface as @Local.
And that would be tantamount to "marking" the interface as both @Local and
@WebService.
From these conversations, I would expect that if I were to add a test to
CalculatorTest.java that attempted to locate the "CalculatorImplLocal" bean
in JNDI, either that lookup would fail or an invocation on the
resulting CalculatorWs
interface would fail. Is this correct?
If it is correct, why is the CalculatorImpl class in that example marked
as @Stateless (in addition to @WebService), since I can't see any way (from
our discussions) that any test written against the EJB interfaces could
pass?