blob: aaabb006975894857fa286db1d14ccf945da3a26 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Apache TomEE</title>
<meta name="description"
content="Apache TomEE is a lightweight, yet powerful, JavaEE Application server with feature rich tooling." />
<meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" />
<meta name="author" content="Luka Cvetinovic for Codrops" />
<link rel="icon" href="../../favicon.ico">
<link rel="icon" type="image/png" href="../../favicon.png">
<meta name="msapplication-TileColor" content="#80287a">
<meta name="theme-color" content="#80287a">
<link rel="stylesheet" type="text/css" href="../../css/normalize.css">
<link rel="stylesheet" type="text/css" href="../../css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="../../css/owl.css">
<link rel="stylesheet" type="text/css" href="../../css/animate.css">
<link rel="stylesheet" type="text/css" href="../../fonts/font-awesome-4.1.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="../../fonts/eleganticons/et-icons.css">
<link rel="stylesheet" type="text/css" href="../../css/jqtree.css">
<link rel="stylesheet" type="text/css" href="../../css/idea.css">
<link rel="stylesheet" type="text/css" href="../../css/cardio.css">
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-2717626-1']);
_gaq.push(['_setDomainName', 'apache.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div class="preloader">
<img src="../../img/loader.gif" alt="Preloader image">
</div>
<nav class="navbar">
<div class="container">
<div class="row"> <div class="col-md-12">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">
<span>
<img src="../../img/logo-active.png">
</span>
Apache TomEE
</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right main-nav">
<li><a href="../../docs.html">Documentation</a></li>
<li><a href="../../community/index.html">Community</a></li>
<li><a href="../../security/security.html">Security</a></li>
<li><a href="../../download-ng.html">Downloads</a></li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div></div>
</div>
<!-- /.container-fluid -->
</nav>
<div id="main-block" class="container main-block">
<div class="row title">
<div class="col-md-12">
<div class='page-header'>
<h1>Spring</h1>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>{note} This document and the related feature is considered a prototype
and will change based on user feedback. All comments suggestions
welcome. {note}</p>
</div>
</div>
</div>
<h1 id="_introduction" class="sect0">Introduction</h1>
<div class="paragraph">
<p>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:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>@Resouce injection of any Spring bean into EJB</p>
</li>
<li>
<p>Injection of any Java EE resource into a Spring bean, including: <strong>
EJB 3.0 beans </strong> EJB 3.1 Singleton Bean <strong> JDBC Connector </strong> JMS
Connector <strong> JMS Queue and Topic </strong> Generic Java EE Connector (JCA)</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>In addition, the OpenEJB Spring integration add support for discovery
and deployment of standard Java EE packages within a Spring context,
including:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>EAR</p>
</li>
<li>
<p>EJB Jar</p>
</li>
<li>
<p>Persistence Unit</p>
</li>
<li>
<p>RAR</p>
</li>
</ul>
</div>
<div class="paragraph">
<p><em>Requirements:</em> * OpenEJB 3.1+ * Spring X.X * Java 1.5 or 1.6</p>
</div>
<h1 id="_spring_beans" class="sect0">Spring Beans</h1>
<div class="paragraph">
<p>The following beans are usable in any spring xml file.</p>
</div>
<div class="paragraph">
<p>Class</p>
</div>
<div class="paragraph">
<p>Description</p>
</div>
<div class="paragraph">
<p>org.apache.openejb.spring.ClassPathApplication</p>
</div>
<div class="paragraph">
<p>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
<em>classpathAsEar</em> property is set to <em>false</em></p>
</div>
<div class="paragraph">
<p>org.apache.openejb.spring.Application</p>
</div>
<div class="paragraph">
<p>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&#8217;s own self-contained EAR, separate from other uses of
'Application'</p>
</div>
<div class="paragraph">
<p>org.apache.openejb.spring.Resource</p>
</div>
<div class="paragraph">
<p>Allows an OpenEJB to be declared in the Spring ApplicationContext</p>
</div>
<div class="paragraph">
<p>org.apache.openejb.spring.OpenEJBResource</p>
</div>
<div class="paragraph">
<p>A FactoryBean that imports a Resource from OpenEJB into the Spring
ApplicationContext. Has the following properties: <em>type</em> such as
javax.sql.DataSource, and <em>resourceId</em>. In the future this bean will not
be required and all OpenEJB Resources will automatically be imported
into the Spring ApplicationContext</p>
</div>
<div class="paragraph">
<p>org.apache.openejb.spring.BmpContainer</p>
</div>
<div class="paragraph">
<p>Allows an OpenEJB BMP to be declared in the Spring ApplicationContext.
Has the following properties: <em>poolSize</em></p>
</div>
<div class="paragraph">
<p>org.apache.openejb.spring.CmpContainer</p>
</div>
<div class="paragraph">
<p>Allows an OpenEJB CMP to be declared in the Spring ApplicationContext.</p>
</div>
<div class="paragraph">
<p>org.apache.openejb.spring.SingletonContainer</p>
</div>
<div class="paragraph">
<p>Allows an OpenEJB Singleton to be declared in the Spring
ApplicationContext. Has the following properties: <em>accessTimeout</em></p>
</div>
<div class="paragraph">
<p>org.apache.openejb.spring.StatefulContainer</p>
</div>
<div class="paragraph">
<p>Allows an OpenEJB Stateful to be declared in the Spring
ApplicationContext. Has the following properties: <em>timeOut</em></p>
</div>
<div class="paragraph">
<p>org.apache.openejb.spring.StatelessContainer</p>
</div>
<div class="paragraph">
<p>Allows an OpenEJB Stateful to be declared in the Spring
ApplicationContext. Has the following properties: <em>timeOut</em>, <em>poolSize</em>,
and <em>strictPooling</em></p>
</div>
<div class="paragraph">
<p>org.apache.openejb.spring.MdbContainer</p>
</div>
<div class="paragraph">
<p>Allows an OpenEJB Message-Driven to be declared in the Spring
ApplicationContext. Has the following properties: <em>resourceAdapter</em>,
<em>messageListenerInterface</em>, <em>activationSpecClass</em>, and <em>instanceLimit</em></p>
</div>
<div class="paragraph">
<p>org.apache.openejb.spring.EJB</p>
</div>
<div class="paragraph">
<p>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:
<em>deploymentId</em>, <em>interface</em></p>
</div>
<h1 id="_examples" class="sect0">Examples</h1>
<div class="paragraph">
<p>See the <a href="spring-ejb-and-jpa.html">Spring EJB and JPA</a> page for
example code and a working Spring xml file.</p>
</div>
<h1 id="__anchor_problems_problems" class="sect0">\{anchor:problems} Problems?</h1>
<div class="paragraph">
<p>If you are having problems with the installation, please send a message
to the OpenEJB users <a href="mailing-lists.html">mailing list</a> containing
any error message(s) and the following information:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>OpenEJB Version</p>
</li>
<li>
<p>Spring Version</p>
</li>
<li>
<p>Java Version (execute java -version)</p>
</li>
<li>
<p>Operating System Type and Version</p>
</li>
</ul>
</div>
<h1 id="_limitations" class="sect0">Limitations</h1>
<div class="paragraph">
<p><em>JavaAgent</em> - 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.</p>
</div>
<div class="paragraph">
<p><em>EntityManager</em> - 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
<a href="http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#beans-factory-class-instance-factory-method">Spring
instance factory method</a> .</p>
</div>
</div>
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-sm-6 text-center-mobile">
<h3 class="white">Be simple. Be certified. Be Tomcat.</h3>
<h5 class="light regular light-white">"A good application in a good server"</h5>
<ul class="social-footer">
<li><a href="https://www.facebook.com/ApacheTomEE/"><i class="fa fa-facebook"></i></a></li>
<li><a href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li>
<li><a href="https://plus.google.com/communities/105208241852045684449"><i class="fa fa-google-plus"></i></a></li>
</ul>
</div>
<div class="col-sm-6 text-center-mobile">
<div class="row opening-hours">
<div class="col-sm-3 text-center-mobile">
<h5><a href="../../latest/docs/" class="white">Documentation</a></h5>
<ul class="list-unstyled">
<li><a href="../../latest/docs/admin/configuration/index.html" class="regular light-white">How to configure</a></li>
<li><a href="../../latest/docs/admin/file-layout.html" class="regular light-white">Dir. Structure</a></li>
<li><a href="../../latest/docs/developer/testing/index.html" class="regular light-white">Testing</a></li>
<li><a href="../../latest/docs/admin/cluster/index.html" class="regular light-white">Clustering</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../../latest/examples/" class="white">Examples</a></h5>
<ul class="list-unstyled">
<li><a href="../../latest/examples/simple-cdi-interceptor.html" class="regular light-white">CDI Interceptor</a></li>
<li><a href="../../latest/examples/rest-cdi.html" class="regular light-white">REST with CDI</a></li>
<li><a href="../../latest/examples/ejb-examples.html" class="regular light-white">EJB</a></li>
<li><a href="../../latest/examples/jsf-managedBean-and-ejb.html" class="regular light-white">JSF</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../../community/index.html" class="white">Community</a></h5>
<ul class="list-unstyled">
<li><a href="../../community/contributors.html" class="regular light-white">Contributors</a></li>
<li><a href="../../community/social.html" class="regular light-white">Social</a></li>
<li><a href="../../community/sources.html" class="regular light-white">Sources</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../../security/index.html" class="white">Security</a></h5>
<ul class="list-unstyled">
<li><a href="http://apache.org/security" target="_blank" class="regular light-white">Apache Security</a></li>
<li><a href="http://apache.org/security/projects.html" target="_blank" class="regular light-white">Security Projects</a></li>
<li><a href="http://cve.mitre.org" target="_blank" class="regular light-white">CVE</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="row bottom-footer text-center-mobile">
<div class="col-sm-12 light-white">
<p>Copyright &copy; 1999-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
</div>
</div>
</div>
</footer>
<!-- Holder for mobile navigation -->
<div class="mobile-nav">
<ul>
<li><a hef="../../latest/docs/admin/index.html">Administrators</a>
<li><a hef="../../latest/docs/developer/index.html">Developers</a>
<li><a hef="../../latest/docs/advanced/index.html">Advanced</a>
<li><a hef="../../community/index.html">Community</a>
</ul>
<a href="#" class="close-link"><i class="arrow_up"></i></a>
</div>
<!-- Scripts -->
<script src="../../js/jquery-1.11.1.min.js"></script>
<script src="../../js/owl.carousel.min.js"></script>
<script src="../../js/bootstrap.min.js"></script>
<script src="../../js/wow.min.js"></script>
<script src="../../js/typewriter.js"></script>
<script src="../../js/jquery.onepagenav.js"></script>
<script src="../../js/tree.jquery.js"></script>
<script src="../../js/highlight.pack.js"></script>
<script src="../../js/main.js"></script>
</body>
</html>