| = Spring |
| :index-group: Spring |
| :jbake-date: 2018-12-05 |
| :jbake-type: page |
| :jbake-status: published |
| |
| \{note} This document and the related feature is considered a prototype |
| and will change based on user feedback. All comments suggestions |
| welcome. \{note} |
| |
| = Introduction |
| |
| The OpenEJB Spring integration makes all Spring defined beans injectable |
| to Java EE components, and all Java EE components can be injected to |
| Spring beans. The injection system supports arbitrarily complex nesting |
| (e.g., Spring bean injected into a Java EE component, which is then |
| injected into another Spring bean), including: |
| |
| * @Resouce injection of any Spring bean into EJB |
| * Injection of any Java EE resource into a Spring bean, including: ** |
| EJB 3.0 beans ** EJB 3.1 Singleton Bean ** JDBC Connector ** JMS |
| Connector ** JMS Queue and Topic ** Generic Java EE Connector (JCA) |
| |
| In addition, the OpenEJB Spring integration add support for discovery |
| and deployment of standard Java EE packages within a Spring context, |
| including: |
| |
| * EAR |
| * EJB Jar |
| * Persistence Unit |
| * RAR |
| |
| _Requirements:_ * OpenEJB 3.1+ * Spring X.X * Java 1.5 or 1.6 |
| |
| = Spring Beans |
| |
| The following beans are usable in any spring xml file. |
| |
| Class |
| |
| Description |
| |
| org.apache.openejb.spring.ClassPathApplication |
| |
| Scrapes the classpath for all EJB, RAR, and Persistence applications, |
| deploys them, and imports them into the current ApplicationContext. All |
| applications found are treated as one big EAR unless the |
| _classpathAsEar_ property is set to _false_ |
| |
| org.apache.openejb.spring.Application |
| |
| Scrapes an individual jar file for EJB, RAR, and Persistence |
| applications, deploys them, and imports them into the current |
| ApplicationContext. The 'jarFile' property is required. The application |
| is treated as it's own self-contained EAR, separate from other uses of |
| 'Application' |
| |
| org.apache.openejb.spring.Resource |
| |
| Allows an OpenEJB to be declared in the Spring ApplicationContext |
| |
| org.apache.openejb.spring.OpenEJBResource |
| |
| A FactoryBean that imports a Resource from OpenEJB into the Spring |
| ApplicationContext. Has the following properties: _type_ such as |
| javax.sql.DataSource, and _resourceId_. In the future this bean will not |
| be required and all OpenEJB Resources will automatically be imported |
| into the Spring ApplicationContext |
| |
| org.apache.openejb.spring.BmpContainer |
| |
| Allows an OpenEJB BMP to be declared in the Spring ApplicationContext. |
| Has the following properties: _poolSize_ |
| |
| org.apache.openejb.spring.CmpContainer |
| |
| Allows an OpenEJB CMP to be declared in the Spring ApplicationContext. |
| |
| org.apache.openejb.spring.SingletonContainer |
| |
| Allows an OpenEJB Singleton to be declared in the Spring |
| ApplicationContext. Has the following properties: _accessTimeout_ |
| |
| org.apache.openejb.spring.StatefulContainer |
| |
| Allows an OpenEJB Stateful to be declared in the Spring |
| ApplicationContext. Has the following properties: _timeOut_ |
| |
| org.apache.openejb.spring.StatelessContainer |
| |
| Allows an OpenEJB Stateful to be declared in the Spring |
| ApplicationContext. Has the following properties: _timeOut_, _poolSize_, |
| and _strictPooling_ |
| |
| org.apache.openejb.spring.MdbContainer |
| |
| Allows an OpenEJB Message-Driven to be declared in the Spring |
| ApplicationContext. Has the following properties: _resourceAdapter_, |
| _messageListenerInterface_, _activationSpecClass_, and _instanceLimit_ |
| |
| org.apache.openejb.spring.EJB |
| |
| A FactoryBean that imports an EJB from OpenEJB into the Spring |
| ApplicationContext. One of these is automatically created for each |
| interface of each EJB, but explicit use can be nice if you desire to |
| import an EJB with a specific name. Has the following properties: |
| _deploymentId_, _interface_ |
| |
| = Examples |
| |
| See the link:spring-ejb-and-jpa.html[Spring EJB and JPA] page for |
| example code and a working Spring xml file. |
| |
| = \{anchor:problems} Problems? |
| |
| If you are having problems with the installation, please send a message |
| to the OpenEJB users link:mailing-lists.html[mailing list] containing |
| any error message(s) and the following information: |
| |
| * OpenEJB Version |
| * Spring Version |
| * Java Version (execute java -version) |
| * Operating System Type and Version |
| |
| = Limitations |
| |
| _JavaAgent_ - OpenEJB uses OpenJPA to provide JPA and CMP persistence, |
| and OpenJPA currently requires a JavaAgent to function properly in a |
| Java 1.5 environment. OpenJPA does not require a JavaAgent in Java 1.6. |
| Use Hibernate as your the provider in your persistence.xml files if you |
| wish to avoid this requirement. |
| |
| _EntityManager_ - Having an OpenEJB created EntityManager or |
| EntityManagerFactory injected into Spring beans is currently not |
| supported. This will be added to the next release. A small workaround |
| for this is to use an EJB as a factory by adding a 'getEntityManager' |
| method an using it as a |
| http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#beans-factory-class-instance-factory-method[Spring |
| instance factory method] . |