How do I add EJB capabilities to an Eclipse dynamic web project?

Ragini picture Ragini · Apr 10, 2012 · Viewed 19.9k times · Source

I am developing a simple application with EJB 3.0 using OpenEJB for deployment and Eclipse as an IDE.

I created the project as a 'dynamic web application' in Eclipse. When I tried creating the first stateless session bean, I realized that the @Remote annotation could not be resolved.

What is the right way to fix this problem ?

  1. Delete the project and create a new 'enterprise application project' (this seems to be pretty heavy weight, so I am not sure I want to go in this direction) ?
  2. Delete the project and create an EJB project (this does not seem to be right because I believe such a project will only let me bundle the EJB part of the application) ?
  3. Add some libraries to my existing project (is there a library pack for EJB 3.x) ?
  4. Add a facet to my existing project (I tried to see if I can add a facet, but I cannot see an EJB facet within the context of this project) ?

Thanks for helping.

Update: I found the answer.

TomEE's installation has a directory containing all the jar files needed to compile and run EJB's 'apache-tomee-webprofile-1.0.0-beta-2/webapps/openejb/lib'

I created a User Library in Eclipse containing all the jars from the lib folder described above and added it to the build path.

The EJB interfaces now compile properly.

Answer

dash1e picture dash1e · Apr 13, 2012
  1. Create an new Enterprise Application Project (EAP)
  2. Create an new EJB Project and add it to the EAP
  3. Add to the EAP your existent WEB project

Now you can create EJBs in the EJB project and call them from the WEB project.

And you can deploy or debug your EAP on an Application Server (like JBoss) that supports Enterprise Application Projects. The EAP is deployed as a unique file with .ear extension.

If you use Tomcat for example you cannot deploy the ear packages.

Here a page with a description about creating ear with Eclipse.