Dain, Thanks for the work! I've updated the "New Instructions" adding the manual steps for Windows users, you can try including this in your installer. Just a minor comment, I also copied the agent jar in addition to the loader jar into Tomcat's lib folder because hardcoding to webapps/openejb/lib may be a problem should webapps be changed or openejb be deployed w/o unpacking the war/zip.
Now for the example, I'm getting the following error: javax.naming.NameNotFoundException: Name "org.acme.TestServlet/ejb" not found. I tried out your example by adding it to the previous example Karan posted but even that one no longer works for me: javax.naming.NameNotFoundException: Name "GreetingBeanBusinessRemote" not found. Maybe I'm still missing something? -Dario > I got annotations mostly working in Tomcat. To try this out, install > OpenEJB into Tomcat as noted before and simply add @EJB and @Resource > annotations to your servlet fields. I added an very simply servlet- > samples application which can be checked out with: > > svn co http://svn.apache.org/repos/asf/openejb/trunk/openejb3/ > examples/servlet-samples > > This is a completely standalone sample and should be an easy starting > point. One critical thing to note about the example is the use of > <scope>provided</scope> in the maven pom.xml file to stop maven from > including duplicate copies of the annotation classes into the web > application. > > > For those that don't want to download the code, here is it: > > public class AnnotatedServlet extends HttpServlet { > @EJB private AnnotatedEJBLocal ejb; > > @Resource private DataSource ds; > > protected void doGet(HttpServletRequest request, > HttpServletResponse response) throws ServletException, IOException { > response.setContentType("text/plain"); > ServletOutputStream out = response.getOutputStream(); > > out.println("@EJB=" + ejb); > if (ejb != null) { > out.println("@EJB.getName()=" + ejb.getName()); > out.println("@EJB.getDs()=" + ejb.getDs()); > } > > out.println("@Resource=" + ds); > } > } > > @Stateless > public class AnnotatedEJB implements AnnotatedEJBLocal { > @Resource private DataSource ds; > private String name = "foo"; > > public String getName() { > return name; > } > > public void setName(String name) { > this.name = name; > } > > public DataSource getDs() { > return ds; > } > > public void setDs(DataSource ds) { > this.ds = ds; > } > > public String toString() { > return "AnnotatedEJB[name=" + name + "]"; > } > } > > public interface AnnotatedEJBLocal { > String getName(); > > void setName(String name); > > DataSource getDs(); > > void setDs(DataSource ds); > } > > <web-app xmlns="http://java.sun.com/xml/ns/j2ee" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http:// > java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" > version="2.4"> > > <display-name>OpenEJB Servlet Examples</display-name> > > <servlet> > <servlet-name>AnnotatedServlet</servlet-name> > <servlet- > class>org.apache.openejb.examples.servlet.AnnotatedServlet</servlet- > class> > </servlet> > > <servlet-mapping> > <servlet-name>AnnotatedServlet</servlet-name> > <url-pattern>/annotated/*</url-pattern> > </servlet-mapping> > </web-app> > > I'm going to be tuning the code over the next couple of days, but it > generally works now. Let me know if you find any bugs, or most > importantly if it doesn't work as you would expect Tomcat to work. > One of my goals is to not violate any expectations of Tomcat users, > so if something stops working like is used to do, let me know ASAP. > The integration should feel like the Tomcat team wrote it themselves. > > -dain >
