...
For example, following is the structure of an ear
that has a web module and an ejb module.
The above Order.ear
file contains two modules. One is OrderWEB.war
file which is a web module and the other is OrderEJB.jar
file which is an ejb module. The META-INF
folder of Order.ear
file contains the application deployment descriptor (application.xml)
and the geronimo application deployment plan (geronimo-application.xml)
. The web application and the ejb application have packaged only their respective deployment descriptors. But the deployment plans for these modules are provided in the geronimo-application.xml
.
The web application (OrderWAR.war)
looks up stateless session bean in the OrderEJB.jar
module to retrieve the order information. The RetrieveOrderInfoBean
in OrderEJB.jar
module uses JDBC connection to read the order information from a DB2 database. {
Code Block |
---|
...
|
...
|
...
|
...
|
...
|
...
<?xml version="1.0" encoding="UTF-8" ?> |
...
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.0" |
...
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
...
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd |
...
"> |
...
<description>Stateless Session Bean Example</description> |
...
<display-name>Stateless Session Bean Example</display-name> |
...
<enterprise-beans> |
...
<session> <ejb-name>RetrieveOrderInfoBean</ejb-name> |
...
<business-local>examples.session.stateless_dd.RetrieveOrderInfo</business-local> |
...
<ejb-class>examples.session.stateless_dd.RetrieveOrderInfoBean</ejb-class> |
...
<session-type>Stateless</session-type> |
...
<transaction-type>Container</transaction-type> |
...
<resource-ref> |
...
<res-ref-name>jdbc/DB2DataSource</res-ref-name> |
...
<res-type>javax.sql.DataSource</res-type> |
...
<res-auth>Container</res-auth> |
...
<res-sharing-scope>Shareable</res-sharing-scope> |
...
</resource-ref> |
...
</session> |
...
</enterprise-beans> |
...
<interceptors> <interceptor> <interceptor-class>examples.session.stateless_dd.RetrieveOrderCallbacks |
...
</interceptor-class> |
...
<post-construct><lifecycle-callback-method>construct</lifecycle-callback-method></post-construct> |
...
<pre-destroy><lifecycle-callback-method>destroy</lifecycle-callback-method></pre-destroy> |
...
</interceptor> |
...
</interceptors> |
...
<assembly-descriptor> |
...
<interceptor-binding> |
...
<ejb-name>RetrieveOrderInfoBean</ejb-name> |
...
<interceptor-class>examples.session.stateless_dd.RetrieveOrderCallbacks |
...
</interceptor-class> |
...
</interceptor-binding> |
...
</assembly-descriptor> |
...
</ejb-jar> |
Code Block | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
{code:
| |
| =
| |
| =
|
|
|
| {{
| }} {{
| |||||||||||||||||
}}}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>OrderWEB</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>RetrieveOrder</display-name>
<servlet-name>RetrieveOrder</servlet-name>
<servlet-class>examples.web.servlet.RetrieveOrder</servlet-class>
</servlet>
<ejb-local-ref>
<ejb-ref-name>ejb/RetrieveOrderInfo</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local>examples.session.stateless_dd.RetrieveOrderInfo</local>
<ejb-link>RetrieveOrderInfoBean</ejb-link>
</ejb-local-ref>
<servlet-mapping>
<servlet-name>RetrieveOrder</servlet-name>
<url-pattern>/RetrieveOrder</url-pattern>
</servlet-mapping>
</web-app>
|
...
Code Block |
---|
...
|
...
|
...
|
...
|
...
|
...
<?xml version="1.0" encoding="UTF-8"?> |
...
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/j2ee/application_5.xsd |
...
" version="5"> |
...
<description>EAR Example</description> |
...
<display-name>Order Sample</display-name> |
...
<module> <web> <web-uri>OrderWEB.war</web-uri> |
...
<context-root>/OrderDemo</context-root> |
...
</web> |
...
</module> |
...
<module> <ejb>OrderEJB.jar</ejb> |
...
</module> |
...
</application> |
...
{code:XML|borderStyle=solid|title=deployment
...
plan
...
of
...
the
...
entire
...
Order.ear
...
(geronimo-application.xml)
}
...
<?xml
...
version="1.0"
...
encoding="UTF-8"?>
...
<application
...
xmlns="http://geronimo.apache.org/xml/ns/j2ee/application-2.0"
...
xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2"
...
application-name="Order">
...
<sys:environment>
...
<sys:moduleId>
...
<sys:groupId>Order</sys:groupId>
...
<sys:artifactId>OrderEAR</sys:artifactId>
...
<sys:version>5.0</sys:version>
...
<sys:type>car</sys:type>
...
</sys:moduleId>
...
</sys:environment>
...
<module>
<web>OrderWEB.war</web>
...
<web-app
...
xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1"
...
>
<sys:environment>
...
<sys:moduleId>
...
<sys:groupId>Order</sys:groupId>
...
<sys:artifactId>OrderWEB</sys:artifactId>
...
<sys:version>2.5</sys:version>
...
<sys:type>war</sys:type>
...
</sys:moduleId>
...
</sys:environment>
...
<context-root>/OrderDemo</context-root>
...
</web-app>
...
</module>
...
<module>
<ejb>OrderEJB.jar</ejb>
...
<openejb-jar
...
xmlns="http://openejb.apache.org/xml/ns/openejb-jar-2.2"
...
xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.2">
...
<sys:environment>
...
<sys:moduleId>
...
<sys:groupId>Order</sys:groupId>
...
<sys:artifactId>OrderEJB</sys:artifactId>
...
<sys:version>3.0</sys:version>
...
<sys:type>jar</sys:type>
...
</sys:moduleId>
...
<sys:dependencies>
...
<sys:dependency>
...
<sys:groupId>console.dbpool</sys:groupId>
...
<sys:artifactId>OrderDS</sys:artifactId>
...
<sys:version>1.0</sys:version>
...
<sys:type>rar</sys:type>
...
</sys:dependency>
...
</sys
...
:dependencies>
</sys:environment>
...
<enterprise-beans>
...
<session>
<ejb-name>RetrieveOrderInfoBean</ejb-name>
...
<naming:resource-ref>
...
<naming:ref-name>jdbc/DB2DataSource</naming:ref-name>
...
<naming:resource-link>OrderDS</naming:resource-link>
...
</naming:resource-ref>
...
</session>
...
</enterprise-beans>
...
</openejb-jar>
...
</module>
...
</application>
Code Block |
---|
Please observe how the JEE 5 resource names and ejb names in ejb-jar.xml
and web.xml
are mapped to actual resources deployed in the server through geronimo-application.xml
.