| Oracle® Containers for J2EE Enterprise JavaBeans Developer's Guide 10g (10.1.3.5.0) Part Number E13981-01 |
|
|
View PDF |
A common Java EE application architecture is one in which you deploy the Web tier to one OC4J instance, and the EJB tier–to another OC4J instance on a separate host in a nonclustered environment.
In this architecture, to access a remote enterprise bean, you must populate the required JNDI properties in your Web-tier code when you create the context (for example, see "Setting JNDI Properties in the Initial Context"). These hard-coded properties can cause portability problems, when, for example, migrating from a test environment to a production environment.
Using OC4J-proprietary deployment XML (see "Using Deployment XML"), you can associate a reference to a remote enterprise bean with a JNDI properties file that contains the required JNDI context variables. This simplifies assembly and deployment.
Figure 19-2 shows this architecture for a JSP/Servlet client, and Figure 19-3 shows this architecture for an EJB client.
Figure 19-2 Web-tier and EJB-tier Remote EJB Access: JSP/Servlet Client

Figure 19-3 Web-tier and EJB-tier Remote EJB Access: EJB Client

For more information about the JNDI properties file, see "Setting JNDI Properties With the JNDI Properties File").
To associate a reference to a remote enterprise bean with a JNDI properties file that contains the required JNDI context variables using OC4J-proprietary element <ejb-ref-mapping>, perform the following configuration on the Web-tier OC4J instance:
Define an <ejb-ref> element in the appropriate client deployment descriptor (see "Where do you Configure an EJB Environment Reference?") and configure the following subelements, as Example 19-5 shows:
<ejb-ref-name>: the logical name of the target enterprise bean.
<ejb-ref-type>: the type of the target enterprise bean, one of Session or Entity.
<home>: the package and class name of the target enterprise bean's remote home interface.
<remote>: package and class name of the target enterprise bean's remote component interface.
Example 19-5 Configuring ejb-ref-name With a Logical Name Resolved by ejb-ref-mapping
<ejb-ref> <ejb-ref-name>ejb/emp</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <home>myBeans.EmployeeBeanHome</home> <remote>myBeans.EmployeeBean</remote> </ejb-ref>
In this architecture, the client deployment descriptor is on the Web-tier OC4J instance. The client of the remote enterprise bean is one of the following:
a JSP or servlet deployed on the Web tier: use the web.xml file.
an enterprise bean deployed on the Web tier: use the ejb-jar.xml file.
Within the orion-web.xml or orion-ejb-jar.xml deployment descriptor (depending on your type of client), define an <ejb-ref-mapping> element that does the following, as Example 19-6 shows:
maps the logical name (ejb/emp) to the actual name (myBeans/EmployeeBean) of the target bean;
specifies that target EJB instances are located on a remote host (remote-server-ref="true");
associates the reference with a JNDI properties file (jndi-properties-file="empjndi.properties") that contains the JNDI context variables that a client needs to access the remote host, on which target EJB instances are deployed.
Example 19-6 Mapping Logical Name to Actual Name With ejb-ref-mapping for a Remote Target EJB
<ejb-ref-mapping
name="ejb/emp"
location="myBeans/EmployeeBean"
remote-server-ref="true"
jndi-properties-file="empjndi.properties"
/>
As Figure 19-1 shows, in the <ejb-ref-mapping> element, you configure the name attribute to match the <ejb-ref-name> and configure the location attribute with the actual name of the target bean. In Example 19-4, the logical name ejb/emp is mapped to the actual name of the target bean myBeans/EmployeeBean.
Figure 19-4 Associating ejb-ref-name and ejb-ref-mapping for a Remote Target EJB

When the Web-tier client (JSP/Servlet or enterprise bean deployed to the Web tier) accesses the remote target enterprise bean (using injection or JNDI lookup), the Web-tier OC4J instance maps the logical name (specified in the Web-tier OC4J instance's web.xml or ejb-jar.xml file) to the actual name (specified in the Web-tier OC4J instance's orion-web.xml or orion-ejb-jar.xml file). The Web-tier OC4J instance uses the JNDI properties file specified in the <ejb-ref-mapping> element to access the EJB-tier OC4J instance and resolve the actual name to the target enterprise bean on the EJB-tier OC4J instance.