Oracle Containers for Java EE, or OC4J, is the
core Java Enterprise Edition runtime component of Oracle Application
Server. The OC4J 11 server provides all of the
containers, APIs and services mandated by the Java EE 5.0 specification.
OC4J is written entirely in Java and executes on the
Java Virtual Machine (JVM) of the standard Java
Development Kit (JDK). The current OC4J release
requires JDK release 5.0. Note you must install the
JDK; it is not provided with OC4J.
Note that this Technology Preview release of OC4J is NOT
officially supported by Oracle.
See the README packaged with the product for instructions on installing, starting
and using OC4J 11.
Java EE 5.0 Support in OC4J 11
OC4J supports the standard Java EE 5.0 specifications
listed in the table below.
J2EE Specification
Version Supported By OC4J
JavaServer Pages (JSP)
2.1
Servlets
2.5
JavaServer Faces (JSF)
1.2
Enterprise JavaBeans (EJB)
3.0
Java Persistence API (JPA)
1.0
Java EE Management
1.1
Java EE Application Deployment
1.2
JMX Remote Access API
JSR-160
Java Transaction API (JTA)
1.0
Java Cryptography Extension (JCE)
1.2.2
Java Transaction Service
1.0
Java Message Service (JMS)
1.1
Java Naming and Directory Interface (JNDI)
1.2
Java Mail
1.3.1
Java Activation Framework
1.0.2
Java Database Connectivity (JDBC)
3.0
Java Authentication and Authorization
Service (JAAS)
1.0
Java EE Connector Architecture
1.5
Java API for XML Web Services (JAX-WS)
2.0
Enterprise Web Services
1.2
Web Services Metadata
2.0
Java API for XML-Based RPC (JAX-RPC)
1.1
SOAP with Attachments API for Java (SAAJ)
1.3
Java API for XML Processing (JAXP)
1.2
Java API for XML Registries (JAXR)
1.0.5
Java API for XML Binding
2.0
Common Annotations for Java
1.0
Streaming API for XML (StAX)
1.0
New and Enhanced Features in OC4J 11
The following topics outline new features in Oracle
Containers for Java EE as well as functional changes from
previous releases.
New Descriptor Filenames Supported
In the production OC4J 11g release, all Oracle-proprietary
deployment descriptors, such as orion-application.xml, wil be
re-named with the oracle- prefix. Files that include oracle-*.xml
in the filename are supported in the current release.
Support for Web Services
OC4J provides full support for Web services in
accordance with the Java EE standard. This includes
support for Java API for XML Web Services (JAX-WS),
the enhanced programming model for Web services in
Java EE 5. Additional support includes:
Support for an asynchronous programming model for Web services
Integration of the quality of services infrastructure with Web Services
Policy and Web Services Policy Attachments
Swappable JAXB 2.0 Web services databinding supporting both the
highly extensible and customizable implementation in Oracle TopLink or
the out of the box JAXB 2.0 reference implementation.
Additional development and tooling enhancements for REST (XML) -based services.
Support for Web Applications
OC4J 11g provides the infrastructure needed to deploy, run and manage Java EE 5.0 Web applications,
including built-in support for JavaServer Faces 1.2 and AJAX.
In addition, a new asynchronous servlet feature that can be used in
conjunction with AJAX enables a servlet to temporarily stop
execution and release its thread while waiting for another process to finish.
Support for Enterprise JavaBeans 3.0
OC4J provides complete support for the Enterprise
JavaBeans 3.0 specification, including support for
EJB annotations and dependency injections.
Support for Oracle TopLink
Oracle TopLink is an advanced object-persistence
framework for use with a wide range of Java EE and
Java application architectures. TopLink continues to provide the
Java Persistence API (JPA) implementation in OC4J.
New Universal Connection Pool
The Universal Connection Pool provides an enhanced common infrastructure for database
connection pooling. It is usable within the OC4J context as well
as by non-Java EE applications for connecting to Oracle and non-Oracle databases
and other resources like JCA and LDAP connections.
Java Message Service Enhancements
The new OC4J provides JMS performance optimizations such as store and forward
infrastructure hardening. Configuration of the OC4J-JMS and AQ-JMS JMS
providers has also been simplified.
Enhanced Support for the Spring Framework
OC4J continues to provide support for applications built on
the increasingly popular Spring Framework. Enhancements in this release include:
A tight integration with the Spring transaction subsystem,
providing quick and direct access to the OC4J transaction manager and exposes additional
OC4J features to Spring transaction users
Transparent access to Spring beans
using standard Java EE dependency injection, simplifying usage of the Spring
component model into a more traditional Java EE application
Sharing of managed application contexts shared across
Java EE modules, such as EJB modules
The following are known issues in this release. Note that
this is a Technology Preview release, meaning that it is
not production quality.
No Management Console Provided
The Application Server Control management console is not
available in this release. Use the admin_client.jar tool
to perform management tasks such as application deployment.
Memory Issues When Running Applications
Depending on the size of application being run on the container,
PermGen issues may be encountered if using the default JDK settings. These errors contain
the following phrase: "... nested exception is java.lang.OutOfMemoryError:
PermGen spaceCaused by: java.lang.OutOfMemoryError: PermGen space".
The solution is to increase the PermGen space at OC4J startup. You can do this by setting
a system property on the oc4j.jar command line:
java -jar -XX:MaxPermSize=256M oc4j.jar
Or using the oc4j.cmd startup command as follows:
SET JAVA_HOME=<java_home>
SET JVM_ARGS=-XXMaxPerSize=256M
SET ORACLE_HOME=<oc4j_home>
oc4j.cmd -start
Web Services Issues
Policy Notification Issues Printed to Console
When invoking Web Service the console prints
information related to policy configuration, such as "No policy to enforce".
These messages are for information only.
The work around for this is to change the log level of the client using a
standard Java logging properties file and set it to WARNING (.level= WARNING),
and use the java.util.logging.config.file to point your client to it.
JMS Issues
Enabling New JMS Provider
This OC4J release includes an early-access version of a new, high-performance JMS provider.
The new JMS provider is configured by editing the J2EE_HOME\config\jms.xml file.
Use the following system property when starting OC4J to enable the new JMS provider,
and essentially override the default OC4J-JMS provider:
-Doc4j.jms.implementation=oracle.j2ee.jms
The -Doc4j.jms.implementation=oc4j.j2ee.jms system property is also supported but has been deprecated.