How you package the components of your application depends on the type of application and how you plan to deploy it.
This chapter describes TopLink-specific details applicable to the common packaging strategies used for various types of applications.
This chapter includes the following sections:
Note:
If you are using EJB 3.0, you may be using annotations instead of some deployment files. Include deployment descriptors to override annotations or specify options not supported by annotations.For more information, see the following:
For non-Java EE Java applications, it is common to package the application in a single JAR file, as Example 10-1 shows.
Example 10-1 Packaging a non-Java EE Java Application
domain_module.jar Java classes that represent the objects mapped project.xml session.xml META-INF Manifest.mf
This JAR contains the TopLink files and domain objects required by the application, including the following:
sessions.xml
(see Section 9.1.2, "sessions.xml File");
project.xml
(see Section 9.1.1, "project.xml File") (or the compiled Project
class file if you are not using XML files for deployment);
The mapped classes required by the application, in a fully-resolved directory structure.
When you create the JAR file, the JAR building utility automatically creates a directory structure within the JAR. Ensure that the sessions.xml
file and the project.xml
file (or project class file) appear at the root of the JAR file. Ensure that the class directory structure starts at the root of the JAR.
If you do not store the project.xml
or sessions.xml
files at the root of the JAR file, see Section 10.8, "Packaging with TopLink Metadata File Resource Paths".
For simple Java EE applications without EJB, it is common to package the application in an Enterprise Archive (EAR) file made up of various Java EE application component archives, as Example 10-2 shows.
Example 10-2 Packaging a Java EE JSP or Servlet Application Without EJB
appname.ear META-INF application.xml orion-application.xml domain_module.jar Java classes that represent the object mapped project.xml session.xm META-INF Manifest.mf web_module.war html pages, JSP's, etc. META-INF web.xml orion-web.xml classes servlet classes lib client_module.jar Client classes META-INF application-client.xml orion-application-client.xml
The component archives with TopLink dependencies include TopLink domain JAR (see Section 10.2.1, "How to Create the TopLink Domain JAR").
The domain JAR contains the TopLink files and domain objects required by the application, including the following:
sessions.xml
(see Section 9.1.2, "sessions.xml File");
project.xml
(see Section 9.1.1, "project.xml File") (or the compiled Project
class file, if you are not using XML files for deployment);
The mapped classes required by the application, in a fully resolved directory structure.
When you create the JAR file, the JAR building utility automatically creates a directory structure within the JAR. Ensure that the sessions.xml
file and the project.xml
file (or project.class
file) appear at the root of the JAR file. Also ensure that the class directory structure starts at the root of the JAR.
If you do not store the project.xml
or sessions.xml
files at the root of the JAR file, see Section 10.8, "Packaging with TopLink Metadata File Resource Paths".
The packaging strategy you choose depends on whether you are packaging an EJB 1.n or 2.n session bean application (see Section 10.3.1, "How to Package an EJB 1.n and 2.n Session Bean Application"), or an EJB 3.0 session bean application (see Section 10.3.2, "How to Package an EJB 3.0 Session Bean Application").
For Java EE applications with session beans, it is common to package the application in an Enterprise Archive (EAR) file made up of various Java EE application component archives, as Example 10-3 shows.
Example 10-3 Packaging a Java EE Application with Session Beans
appname.ear META-INF application.xml orion-application.xml ejb_module_X.jar EJB classes - session and non-entity beans META-INF ejb-jar.xml orion-ejb-jar.xml - no persistence-manager subentries domain_module.jar Java classes that represent the object mapped project.xml session.xml META-INF Manifest.mf web_module.war html pages, JSP's, etc. META-INF web.xml orion-web.xml classes servlet classes lib client_module.jar Client classes META-INF application-client.xml orion-application-client.xml
The component archives with TopLink dependencies include the following:
TopLink domain JAR (see Section 10.2.1, "How to Create the TopLink Domain JAR");
EJB JAR (see Section 10.3.4, "How to Create the EJB JAR").
For information on how to package an EJB 3.0 session bean application, see "Packaging an EclipseLink JPA Application" section of EclipseLink Developer's Guide at http://wiki.eclipse.org/Packaging_and_Deploying_EclipseLink_JPA_Applications_%28ELUG%29#Packaging_an_EclipseLink_JPA_Application
.
The domain JAR contains the TopLink files and domain objects required by the application, including the following:
sessions.xml
(see Section 9.1.2, "sessions.xml File");
project.xml
(see Section 9.1.1, "project.xml File") (or the compiled Project.class
file if you are not using XML files for deployment);
The mapped classes required by the application, in a fully-resolved directory structure.
When you create the JAR file, the JAR building utility automatically creates a directory structure within the JAR. Ensure that the sessions.xml
file and the project.xml
file (or project.class
file) appear at the root of the JAR file. Also ensure that the class directory structure starts at the root of the JAR.
If you do not store the project.xml
or sessions.xml
files at the root of the JAR file, see Section 10.8, "Packaging with TopLink Metadata File Resource Paths".
In this type of application, the EJB JAR contains session beans. Consequently, its orion-ejb-jar.xml
file does not contain persistence-manager
or pm-properties
entries. These entries apply only to CMP applications.
See "Packaging an EclipseLink JPA Application" section of EclipseLink Developer's Guide at http://wiki.eclipse.org/Packaging_and_Deploying_EclipseLink_JPA_Applications_%28ELUG%29#Packaging_an_EclipseLink_JPA_Application
for information on how to package your JPA application.
To package a POJO application for weaving, you create a JAR that contains a sessions.xml
file and a persistence.xml
file.
For more information on weaving, see Section 2.10.4.1, "To Package a POJO Application for Weaving".
For Java EE applications that use CMP to persist entity beans, it is common to package the application in an Enterprise Archive (EAR) file made up of various Java EE application component archives, as Example 10-4 shows.
Example 10-4 Packaging a Java EE Application with Entity Beans with Container-Managed Persistence
appname.ear META-INF application.xml orion-application.xml cmp_ejb_module_1.jar EJB classes - cmp entity beans META-INF ejb-jar.xml orion-ejb-jar.xml - includes persistence-manager properties toplink-ejb-jar.xml ejb_module_X.jar EJB classes - non-entity beans META-INF ejb-jar.xml orion-ejb-jar.xml - no persistence-manager subentries web_module.war html pages, JSP's, etc. META-INF web.xml orion-web.xml classes servlet classes lib client_module.jar Client classes META-INF application-client.xml orion-application-client.xml
The component archives with TopLink dependencies include EJB JAR (see Section 10.3.4, "How to Create the EJB JAR").
In this type of application, the EJB JAR file specifically service both non-entity and entity EJB. It includes the following:
The home and remote, and all implementation code for all mapped beans in the application.
All mapped non-EJB classes from the Oracle JDeveloper or TopLink Workbench project
The home and remote, and all implementation code for any session beans included in the application.
Helper classes that contain TopLink amendment methods, and any other classes the application requires.
For example, an instance of oracle.toplink.ejb.cmp.DeploymentCustomization
(for more information, see customization-class
in Table 9-3 in Section 9.9.1, "How to Configure persistence-manager Entries").
Store the following XML files in the EJB JAR \meta-inf
directory:
ejb-jar.xml
(see ejb-jar.xml File)
JAVA-EE-COMTAINER-ejb-jar.xml
(see JAVA-EE-CONTAINER-ejb-jar.xml File)
toplink-ejb-jar.xml
(see toplink-ejb-jar.xml File)
Note:
If you do not use XML files for deployment, include your compiledoracle.toplink.sessions.Project
file at the root of the EJB JAR (not in the \meta-inf
directory).You must persist all of the entity beans to the same data source. For a CMP application, TopLink does not support the session broker functionality (see Section 87.7, "Session Broker and Client Sessions").
For Java EE applications that use BMP to persist entity beans, it is common to package the application in an Enterprise Archive (EAR) file made up of various Java EE application component archives, as Example 10-5 shows.
Example 10-5 Packaging a Java EE Application with Entity Beans with Bean-Managed Persistence
appname.ear META-INF application.xml orion-application.xml bmp_ejb_module_1.jar EJB classes - bmp entity beans META-INF ejb-jar.xml orion-ejb-jar.xml - includes persistence-manager properties toplink-ejb-jar.xml ejb_module_X.jar EJB classes - non-entity beans META-INF ejb-jar.xml orion-ejb-jar.xml - no persistence-manager subentries domain_module.jar Java classes that represent the object mapped project.xml session.xml META-INF Manifest.mf web_module.war html pages, JSP's, etc. META-INF web.xml orion-web.xml classes servlet classes lib client_module.jar Client classes META-INF application-client.xml orion-application-client.xml
The component archives with TopLink dependencies include the following:
TopLink domain JAR (see Section 10.2.1, "How to Create the TopLink Domain JAR")
EJB JAR (see Section 10.3.4, "How to Create the EJB JAR")
The domain JAR contains the TopLink files and domain objects required by the application, including the following:
sessions.xml
(see Section 9.1.2, "sessions.xml File");
project.xml
(see Section 9.1.1, "project.xml File") (or the compiled Project.class
file if you are not using XML files for deployment);
The mapped classes required by the application, in a fully resolved directory structure.
When you create the JAR file, the JAR building utility automatically creates a directory structure within the JAR. Ensure that the sessions.xml
file and the project.xml
file (or project.class
file) appear at the root of the JAR file. Also ensure that the class directory structure starts at the root of the JAR.
If you do not store the project.xml
or sessions.xml
files at the root of the JAR file, see Section 10.8, "Packaging with TopLink Metadata File Resource Paths".
In this type of application, the EJB JAR file specifically services both session and entity beans. It includes the following:
The home and remote, and all implementation code for all mapped beans in the application.
All mapped non-EJB classes from the Oracle JDeveloper or TopLink Workbench project.
The home and remote, and all implementation code for any session beans included in the application.
Helper classes that contain TopLink amendment methods, and any other classes the application requires.
Store the following XML files in the EJB JAR \meta-inf
directory:
ejb-jar.xml
(see ejb-jar.xml File)
JAVA-EE-COMTAINER-ejb-jar.xml
(see JAVA-EE-CONTAINER-ejb-jar.xml File)
Because the EJB JAR does not contain entity beans with container-managed persistence, its orion-ejb-jar.xml
file must not contain persistence-manager
or pm-properties
entries.
For more information, see Section 9.9.1, "How to Configure persistence-manager Entries".
If you do not store the project.xml
or sessions.xml
files at the root of the JAR file, then you must provide the full resource path to the files when accessing them. Ensure that you use "/
" in resources paths, not "\
". Using "\
" will not work in Java.
For example, in the jar
element, reference the project.xml
and sessions.xml
files as follows:
<jar>/myapp/ordersys/persist/sessions.xml <jar>/myapp/ordersys/persist/project.xml
In the sessions.xml
file, reference the project.xml
as follows:
myapp/ordersys/persist/project.xml
To acquire the session, use the following:
SessionManager.getManager().getSession( new XMLSessionConfigLoader("myapp/ordersys/persist/sessions.xml"), "OrdersysSession", getClass().getClassLoader() );
For more information about acquiring sessions at run time, see Section 90.3, "Acquiring a Session from the Session Manager".