Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Wiki Markup
{snippet:id=code|url=openejb3/examples/telephone-stateful/src/main/java/org/apache/openejb/examples/telephone/Telephone.java|lang=java}

The

bean

class

uses

the

annotation

*

@Remote

*

but

does

not

specify

a

list

of

interfaces

as

is

normally

required.

Per

EJB3

rules,

if

the

bean

implements

exactly

*

one

business

interface

*

it

may

use

@Remote

with

no

other

values

and

that

business

interface

is

then

implied

to

be

a

remote

business

interface.

The

same

rule

applies

to

identical

usage

of

@Local.

The

critical

thing

to

know

is

that

if

you

add

another

interface

the

rules

change

and

require

that

you

specify

both

interfaces

in

the

@Remote

annotation

as

in

@Remote({Telephone.class,

SecondInterface.class}).

Tip
titleEJB3 Notes
Wiki Markup

Embedding

We're going to embed OpenEJB3 into a plain JUnit TestCase as a simple means of demonstrating the remote capabilities. We'll do the embedding in our test setUp method, then will make two test methods: one for invoking the bean's remote interface via the LocalInitialContextFactory which goes straight against the embedded container system; one for invoking the bean's remote interface via the RemoteInitialContextFactory which connects to a Socket and communicates to the embedded container system over the ejbd protocol.

test setUp
Wiki Markup
{snippet:id=setup|url=openejb3/examples/telephone-stateful/src/test/java/org/apache/openejb/examples/telephone/TelephoneTest.java|lang=java}
making in-vm calls to a remote business interface
Wiki Markup
{snippet:id=localcontext|url=openejb3/examples/telephone-stateful/src/test/java/org/apache/openejb/examples/telephone/TelephoneTest.java|lang=java}
making networked calls to a remote business interface
Wiki Markup
{snippet:id=remotecontext|url=openejb3/examples/telephone-stateful/src/test/java/org/apache/openejb/examples/telephone/TelephoneTest.java|lang=java}

Maven setup