blob: b400cb6f14854f31ba2602e62395bda51d7653d7 [file] [log] [blame]
:index-group: Unrevised
:jbake-date: 2018-12-05
:jbake-type: page
:jbake-status: published
= Via annotation
[source,java]
----
package org.superbiz.refs;
import javax.annotation.Resource;
import javax.ejb.Stateless;
import javax.naming.InitialContext;
import javax.sql.DataSource;
@Stateless
@Resource(name = "myFooDataSource", type = DataSource.class)
public class MyDataSourceRefBean implements MyBeanInterface {
@Resource
private DataSource myBarDataSource;
public void someBusinessMethod() throws Exception {
if (myBarDataSource == null) throw new NullPointerException("myBarDataSource not injected");
// Both can be looked up from JNDI as well
InitialContext context = new InitialContext();
DataSource fooDataSource = (DataSource) context.lookup("java:comp/env/myFooDataSource");
DataSource barDataSource = (DataSource) context.lookup("java:comp/env/org.superbiz.refs.MyDataSourceRefBean/myBarDataSource");
}
}
----
== Via xml
The above `@Resource` annotation usage is 100% equivalent to the following
xml.
[source,xml]
----
<resource-ref>
<res-ref-name>myFooDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
</resource-ref>
<resource-ref>
<res-ref-name>org.superbiz.refs.MyDataSourceRefBean/myBarDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<injection-target>
<injection-target-class>org.superbiz.refs.MyDataSourceRefBean</injection-target-class>
<injection-target-name>myBarDataSource</injection-target-name>
</injection-target>
</resource-ref>
----