When you scan your path for JAX-RS annotated resource beans, your beans are registered in per-request mode. This means that an instance will be created for every HTTP request served. You will usually require information from your environment. If you run a
WAR in a Servlet container with Beta 2 or lower, you can only use JNDI lookups to obtain references to Java EE resources and configuration information. In this case, define your EE configuration (that is, ejb-ref, env-entry, persistence-context-ref, etc.) in the web.xml of your RESTEasy WAR file. Then, within your code, perform JNDI lookups in the java:comp namespace. For example:
web.xml
<ejb-ref> <ejb-ref-name>ejb/foo</ejb-ref-name> ... </ejb-ref>
Resource Code:
@Path("/")
public class MyBean {
public Object getSomethingFromJndi() {
new InitialContext.lookup("java:comp/ejb/foo");
}
...
}
You can also configure and register your beans manually through the Registry. In a
WAR-based deployment, you must write a specific ServletContextListener to do this. The listener lets you obtain a reference to the Registry, like so:
public class MyManualConfig implements ServletContextListener
{
public void contextInitialized(ServletContextEvent event)
{
Registry registry = (Registry) event.getServletContext().getAttribute(Registry.class.getName());
}
...
}
We recommend investigating Spring Integration and the Embedded Container's Spring Integration for a full understanding of this process.