Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Overview

Span
stylefloat: right;

...

margin-left:

...

20px;

...

HTML

Div

In this example we use the @Resource annotation to inject a javax.sql.DataSource

...

into

...

our

...

bean.

...

The

...

trickiest

...

thing

...

about

...

injecting

...

a

...

DataSource

...

is

...

not

...

declaring

...

the

...

annotation,

...

but

...

actually

...

configuring

...

the

...

data

...

source.

...

In

...

OpenEJB

...

the

...

rules

...

are

...

quite

...

simple.

...

An

...

declaration

...

like

...

the

...

following

...

in

...

code:

...

Code Block

...


@Resource DataSource customerDataSource;

...

Matches

...

a

...

data

...

source

...

declared

...

as

...

follows

...

in

...

the

...

openejb.xml

...

file:

...

Code Block

...


<Resource type="DataSource" id="customerDataSource">
 ....
</Resource>

...

As

...

seen

...

in

...

this

...

example,

...

the

...

data

...

source

...

can

...

also

...

be

...

declared

...

via

...

properties

...

as

...

follows:

...

Code Block

...


customerDataSource = new://Resource?type=DataSource

...

This

...

style

...

of

...

properties

...

creation

...

can

...

be

...

used

...

in

...

the

...

InitialContext

...

properties,

...

set

...

into

...

the

...

System

...

properties,

...

or

...

passed

...

in

...

on

...

the

...

command

...

line

...

as

...

vm

...

properties.

...

The

...

source

...

for

...

this

...

example

...

is

...

in

...

the

...

"injection-of-datasource"

...

directory

...

located

...

in

...

the

...

openejb-examples.zip

...

available

...

on

...

the

...

download

...

page.

...

Div
styleclear:both;

The Code

Wiki Markup
}{div}

h1. The Code

{snippet:id=code|url=openejb3/examples/injection-of-datasource/src/main/java/org/superbiz/injection/MoviesImpl.java|lang=java}

h1. 

Writing

...

a

...

unit

...

test

...

for

...

the example

Wiki Markup
 example

{snippet:id=code|url=openejb3/examples/injection-of-datasource/src/test/java/org/superbiz/injection/MoviesTest.java|lang=java}

Note

...

in

...

the

...

above

...

test

...

code

...

the

...

following

...

lines:

{
Code Block
}
p.put("movieDatabase", "new://Resource?type=DataSource");
p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
{code}

As

...

mentioned

...

these

...

actually

...

create

...

and

...

configure

...

the

...

data

...

source.

...

When

...

OpenEJB

...

boots

...

up,

...

these

...

properties

...

will

...

get

...

read

...

and

...

executed

...

allowing

...

you

...

to

...

keep

...

all

...

the

...

configuration

...

required

...

to

...

run

...

your

...

tests

...

right

...

in

...

the

...

test

...

case

...

itself.

...

No

...

need

...

to

...

keep

...

dozens

...

of

...

openejb.xml

...

config

...

files

...

in

...

your

...

projects

...

or

...

try

...

and

...

create

...

one

...

big

...

configuration

...

that

...

might

...

end

...

up

...

loading

...

a

...

lot

...

of

...

unneeded

...

containers

...

and

...

resources.

...

In

...

your

...

production

...

system

...

you

...

can

...

place

...

the

...

properties

...

into

...

the

...

OPENEJB_HOME/conf/system.properties

...

file

...

or

...

add

...

them

...

to

...

your

...

OPENEJB_HOME/conf/openejb.xml

...

with

...

a

...

declaration

...

like

...

so:

Code Block
xml
xml


{code:xml}
<Resource type="DataSource" id="movieDatabase">
 JdbcDriver = org.hsqldb.jdbcDriver
 JdbcUrl = jdbc:hsqldb:mem:moviedb
</Resource>
{code}

h1.  Running

Running the example is fairly simple.  In the 

Running

Running the example is fairly simple. In the "injection-of-datasource"

...

directory

...

of

...

the

...

examples

...

zip

...

,

...

just

...

run:

$ mvn clean install

Which should create output like the following.

No Format


{quote}
$ mvn clean install
{quote}

Which should create output like the following.

{noformat}
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.superbiz.injection.MoviesTest
Apache OpenEJB 3.0    build: 20080408-04:13
http://openejb.apache.org/
INFO - openejb.home = /Users/dblevins/work/openejb-3.0/examples/injection-of-datasource
INFO - openejb.base = /Users/dblevins/work/openejb-3.0/examples/injection-of-datasource
INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
INFO - Configuring Service(id=Default JDK 1.3 ProxyFactory, type=ProxyFactory, provider-id=Default JDK 1.3 ProxyFactory)
INFO - Found EjbModule in classpath: /Users/dblevins/work/openejb-3.0/examples/injection-of-datasource/target/classes
INFO - Configuring app: /Users/dblevins/work/openejb-3.0/examples/injection-of-datasource/target/classes
INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
INFO - Auto-linking resource-ref 'org.superbiz.injection.MoviesImpl/movieDatabase' in bean Movies to Resource(id=movieDatabase)
INFO - Loaded Module: /Users/dblevins/work/openejb-3.0/examples/injection-of-datasource/target/classes
INFO - Assembling app: /Users/dblevins/work/openejb-3.0/examples/injection-of-datasource/target/classes
INFO - Jndi(name=MoviesLocal) --> Ejb(deployment-id=Movies)
INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
INFO - Deployed Application(path=/Users/dblevins/work/openejb-3.0/examples/injection-of-datasource/target/classes)
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.911 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

{noformat}