tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Blevins <david.blev...@gmail.com>
Subject Re: OPEN EJB most recent version and POJO's.
Date Wed, 08 Jun 2011 06:23:51 GMT

On Jun 7, 2011, at 8:38 PM, Zachary1234 wrote:

> 
> Sorry, I had this message mixed up with another one.
> What I really wanted to ask was:
> 
> 
> Do I have to use the libs included with openEJB for the Bean Annotations described,
> 
> or can I put javaee.jar, from the J2EE 5, in order to use the annotations
> 
> from the default of the language itself, and still have the application server
> 
> pick up the annotations and treat the annotated class as expected?
> 
> Can I use javaee.jar, in a situation where I just want to or need to for other reasons?

You can certainly compile your classes and use any javaee jar you want in your IDE.

In terms of running in the server you should use the server provided libraries.  It's hard
to know what is or is not in the "javaee" jar of any vendor.

Strictly speaking the Java EE TCK tests that the required APIs are present and compliant in
the classpath, but it does not test if they are in the same jar or spread across multiple
jars.  Geronimo for example doesn't have a javaee jar, instead each individual specification
has its own jar.  We do have a "javaee" jar made from the individual jars Geronimo produces,
but with javamail excluded because that "API" is really an implementation and fixing bugs
on it would require making a new javaee jar each time.  The JACC API is also somewhat implementation
heavy, but we include that in our javaee jar.  As well OpenEJB has support internally for
some EJB 3.1 features like @Singleton, etc.  We put those in a separate jar because we didn't
want people dependent on our javaee-api-5.0.jar to unknowingly become dependent on Java EE
6 features.  We even gave it the name "ejb31-experimental-api.jar" so it communicated clearly
that the spec was not final and everything was subject to change.  We could probably change
that to "ejb31-partial-api.jar" as the spec has been closed.

Some people have successfully swapped out the javaee api jar in the server as well.  Wouldn't
be something I would recommend until things are working well.  And certainly in terms of submitting
any bugs definitely first verify the bug also exists with the original version shipped by
OpenEJB before filing anything.


-David

> Date: Tue, 7 Jun 2011 19:15:05 -0700
> From: ml-node+3581464-1241930645-42018@n4.nabble.com
> To: stargate7thsymbol@live.co.uk
> Subject: Re: OPEN EJB most recent version and POJO's.
> 
> 
> 
> 	
> On Jun 7, 2011, at 5:11 PM, Zachary1234 wrote:
> 
> 
>> Do I have to use the libs included with JBOSS AS for the Bean Annotations described,
> 
>> or can I put javaee.jar, from the J2EE 5, in order to use the annotations
> 
>> from the default of the language itself, and still have the application server
> 
>> pick up the annotations and treat the annotated class as expected?
> 
>> Is there any extra conf/xml configuration required here?
> 
> 
> OpenEJB and JBoss are both implementations of EJB.  Like OSX and Windows.  Don't worry,
you're not the first person to be confused by the project name and ask for JBoss or WebLogic
or other server support :)  We're a very patient bunch and understand it's hard when learning.
> 
> 
> If you wanted to use OpenEJB, this would be the best tutorial:
> 
> 
>  https://cwiki.apache.org/OPENEJBx30/hello-world.html
> 
> No xml required.  Just use the libraries shown in that tutorial and you'll have your
first EJB up and running.
> 
> 
> These examples are very nice too:
> 
> 
>  http://openejb.apache.org/examples.html
> 
> 
> -David
> 
> 
>> Date: Tue, 7 Jun 2011 12:07:07 -0700
> 
>> From: [hidden email]
> 
>> To: [hidden email]
> 
>> Subject: Re: OPEN EJB most recent version and POJO's.
> 
>> 
> 
>> 
> 
>> 
> 
>> 	As of EJB 3.0 everything is based on POJOs exactly as you describe.  POJOs with
Remote and local access is supported through JNDI lookup.  Different lifecycles are available.
 And all of it is standard and handled by the container exactly as you describe.
> 
>> 
> 
>> 
> 
>> In addition they can offer security and transaction support and interceptors.  Security
is off by default, transactions are on by default but can be shut off, and interceptors don't
factor in unless you explicitly add some.
> 
>> 
> 
>> 
> 
>> On Jun 7, 2011, at 12:47 AM, Zachary1234 wrote:
> 
>> 
> 
>> 
> 
>>> -A Pojo which I can have instantiated within openEJB
> 
>> 
> 
>>> by the context.lookup call either 
> 
>> 
> 
>> 
> 
>> - @Stateful gives you a POJO that will be instantiated on lookup.  Each lookup will
result in a new instance of the POJO.
> 
>> 
> 
>> - @Singleton gives you a POJO that will be instantiated on *first* lookup.  Each
subsequent lookup will give you a reference to the same bean.
> 
>> 
> 
>> 
> 
>> See http://openejb.apache.org/3.0/simple-stateful-example.html
>> See http://openejb.apache.org/3.0/singleton-example.html
>> 
> 
>> There is another lifecycle called @Stateless, but doesn't sound like what you want.
 That is essentially a small pool of reusable instances hooked up to JNDI.
> 
>> 
> 
>> 
> 
>> To get something into JNDI you need to use one of these three annotations on the
POJO so we know how you want us to handle its lifecycle when lookups occur.  I.e. it tells
us what you want us to give the caller; a new instance, the same instance, or an instance
from a pool.
> 
>> 
> 
>> 
> 
>>> -from within another static class/object within the same openEJB instance
> 
>> 
> 
>> 
> 
>> Putting @LocalBean on the pojo class will make it available locally for JNDI lookup
-- no interface required.  By default the MyClass pojo will be available in JNDI under the
name "MyPojoLocalBean".  This is configurable.
> 
>> 
> 
>> 
> 
>> Putting @Local on an interface and implementing that interface in the pojo will make
it available locally for lookup.  Only the methods of the interface will be accessible by
others in the same VM.  By default the MyClass pojo will be available under the name "MyClassLocal"
> 
>> 
> 
>> 
> 
>> To lookup specify org.apache.openejb.client.LocalInitialContextFactory as your Context.INITIAL_CONTEXT_FACTORY
when creating the InitialContext, then use the name described above.
> 
>> 
> 
>> 
> 
>> Note for unit testing, any @Remote interfaces (described below) can be looked up
from the LocalInitialContextFactory as well.  This is nice as the LocalInitialContextFactory
involves no ports or actual networking code.  Just plain direct access to JNDI of the VM you
are in.
> 
>> 
> 
>> 
> 
>>> -on the same PC in a seperate JVM.
> 
>> 
> 
>>> -Or on a seperate PC in a seperate JVM, through a classic network.
> 
>> 
> 
>> 
> 
>> Putting @Remote on an interface and implementing that interface in the bean will
make it available remote for lookup and execution from another vm outside the server, either
on the same PC or elsewhere in the network.  By default the MyClass pojo will be available
in JNDI under "MyClassRemote".  This is configurable.
> 
>> 
> 
>> 
> 
>> To lookup from a client in another vm specify org.apache.openejb.cient.RemoteInitialContextFactory
as the Context.INITIAL_CONTEXT_FACTORY and "ejbd://theserver:4201" as the Context.PROVIDER_URL.
> 
>> 
> 
>> 
> 
>> 
> 
>>> Of course, from seperate VM's, I intend to use JNDI.
> 
>> 
> 
>>> 
> 
>> 
> 
>>> -If just calling a class from within another class,
> 
>> 
> 
>>> do I just deploy the compiled class in a jar file
> 
>> 
> 
>>> to the JBOSS AS deployment directory, as per normal?
> 
>> 
> 
>> 
> 
>> Two options.  You can put the app in a server, or you can put the server in your
app.
> 
>> 
> 
>> 
> 
>> Here is an example if putting the server in your app.
> 
>> 
> 
>> 
> 
>> http://openejb.apache.org/3.0/embedded-and-remotable.html
>> 
> 
>> To put the app in a server, you just put the jar file of your app into the ${openejb.home}/apps/
directory and start the openejb server.
> 
>> 
> 
>> 
> 
>>> -How can I run code like a main method
> 
>> 
> 
>>> inside the Microcontainer/AS (non EJB, any version standard)?
> 
>> 
> 
>> 
> 
>> I'm not sure what you might mean with this one, but the 'embedded-and-remote' might
be what you are after.  That gives you a plain 'main method' java application that can also
service requests from remote clients.
> 
>> 
> 
>> 
> 
>>> -If I then wish to use JNDI for context lookups, 
> 
>> 
> 
>>> how do I declare the POJO in my openEJB .class,.jar?
> 
>> 
> 
>>> Is a simple annotation necessary for this?
> 
>> 
> 
>>> -If annotation is necessary, what is the annotation 
> 
>> 
> 
>>> name/import statement/.jar lib filename?
> 
>> 
> 
>> 
> 
>> This tutorial is a great one for showing all the steps with annotations and compiling
and running.  No IDE or build tool is used which makes it easier to see what is going on:
> 
>> 
> 
>> 
> 
>> http://openejb.apache.org/hello-world.html
>> 
> 
>> 
> 
>> -David
> 
>> 
> 
>> 
> 
>> 
> 
>> 	
> 
>> 	
> 
>> 
> 
>> 	
> 
>> 
> 
>> 	
> 
>> 	
> 
>> 		If you reply to this email, your message will be added to the discussion below:
> 
>> 		http://openejb.979440.n4.nabble.com/OPEN-EJB-most-recent-version-and-POJO-s-tp3576153p3580513.html
>> 	
> 
>> 	
> 
>> 		
> 
>> 		To unsubscribe from OPEN EJB most recent version and POJO's., click here.
> 
>> 	 		 	   		  
> 
>> 
> 
>> --
> 
>> View this message in context: http://openejb.979440.n4.nabble.com/OPEN-EJB-most-recent-version-and-POJO-s-tp3576153p3581234.html
>> Sent from the OpenEJB User mailing list archive at Nabble.com.
> 
> 
> 	
> 	
> 
> 	
> 
> 	
> 	
> 		If you reply to this email, your message will be added to the discussion below:
> 		http://openejb.979440.n4.nabble.com/OPEN-EJB-most-recent-version-and-POJO-s-tp3576153p3581464.html
> 	
> 	
> 		
> 		To unsubscribe from OPEN EJB most recent version and POJO's., click here.
> 	 		 	   		  
> 
> --
> View this message in context: http://openejb.979440.n4.nabble.com/OPEN-EJB-most-recent-version-and-POJO-s-tp3576153p3581555.html
> Sent from the OpenEJB User mailing list archive at Nabble.com.


Mime
View raw message