Author: buildbot
Date: Tue Jul 2 01:26:53 2013
New Revision: 868096
Log:
Staging update by buildbot for tomee
Added:
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/README.html
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/build.xml
(with props)
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/pom.xml
(with props)
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/main/
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/main/java/
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/main/java/org/
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/main/java/org/superbiz/
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/main/java/org/superbiz/asyncpost/
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/main/java/org/superbiz/asyncpost/Executor.java
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/main/java/org/superbiz/asyncpost/SlowStarter.java
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/test/
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/test/java/
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/test/java/org/
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/test/java/org/superbiz/
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/test/java/org/superbiz/asyncpost/
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/test/java/org/superbiz/asyncpost/SlowStarterTest.java
Modified:
websites/staging/tomee/trunk/cgi-bin/ (props changed)
websites/staging/tomee/trunk/content/ (props changed)
websites/staging/tomee/trunk/content/examples-trunk/index.html
websites/staging/tomee/trunk/content/examples-trunk/pom.xml
Propchange: websites/staging/tomee/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Jul 2 01:26:53 2013
@@ -1 +1 @@
-1493100
+1498751
Propchange: websites/staging/tomee/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Jul 2 01:26:53 2013
@@ -1 +1 @@
-1493100
+1498751
Added:
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/README.html
==============================================================================
---
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/README.html
(added)
+++
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/README.html
Tue Jul 2 01:26:53 2013
@@ -0,0 +1,313 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+
+ <meta charset="utf-8">
+ <title>@Asynchronous @PostConstruct</title>
+ <meta name="description" content="">
+ <meta name="author" content="">
+
+ <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+ <!--[if lt IE 9]>
+ <script
src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+
+ <!-- Le styles -->
+ <link href="./../../resources/css/bootstrap.css" rel="stylesheet">
+ <link href="./../../resources/css/prettify.css" rel="stylesheet">
+ <link href="./../../resources/css/bootstrap-mods.css" rel="stylesheet">
+ <link href="./../../resources/css/main.css" rel="stylesheet">
+
+ <script type="text/javascript">
+ function fbshare () {
+ window.open(
+ "http://www.facebook.com/sharer/sharer.php?u="+document.URL,
+ 'Share on Facebook',
+ 'width=640,height=426');
+ };
+ function gpshare () {
+ window.open(
+ "https://plus.google.com/share?url="+document.URL,
+ 'Share on Google+',
+ 'width=584,height=385');
+ };
+ function twshare () {
+ window.open(
+
"https://twitter.com/intent/tweet?url="+document.URL+"&text=@Asynchronous
@PostConstruct",
+ 'Share on Twitter',
+ 'width=800,height=526');
+ };
+ </script>
+
+ <!-- Le fav and touch icons -->
+ <link rel="shortcut icon" href="./../../resources/images/favicon.ico">
+ <link rel="apple-touch-icon"
href="./../../resources/images/apple-touch-icon.png">
+ <link rel="apple-touch-icon" sizes="72x72"
href="./../../resources/images/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="114x114"
href="./../../resources/images/apple-touch-icon-114x114.png">
+
+ <script src="./../../resources/js/prettify.js"
type="text/javascript"></script>
+ <script src="./../../resources/js/jquery-latest.js"></script>
+ <script src="http://platform.twitter.com/widgets.js"
type="text/javascript"></script>
+ <script src="./../../resources/js/common.js"></script>
+ <script src="./../../resources/js/prettyprint.js"></script>
+
+ <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="topbar" data-dropdown="dropdown">
+ <div class="fill">
+ <div class="container">
+ <a class="brand" href="./../../index.html">Apache TomEE</a>
+ <ul class="nav">
+ <li class="dropdown">
+ <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+ Apache
+ <b class="caret"></b>
+ </a>
+ <ul class="dropdown-menu">
+ <!-- <li><a href="./../../misc/whoweare.html">Who we
are?</a></li> -->
+ <!-- <li><a
href="./../../misc/heritage.html">Heritage</a></li> -->
+ <li><a href="http://www.apache.org">Apache Home</a></li>
+ <!-- <li><a
href="./../../misc/resources.html">Resources</a></li> -->
+ <li><a href="./../../misc/contact.html">Contact</a></li>
+ <li><a href="./../../misc/legal.html">Legal</a></li>
+ <li><a
href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a
href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+ <!-- <li class="divider"/> -->
+ </ul>
+ </li>
+ <li><a href="./../../index.html">Home</a></li>
+ <li><a href="./../../downloads.html">Downloads</a></li>
+ <li><a href="./../../documentation.html">Documentation</a></li>
+ <li><a href="./../../examples-trunk/index.html">Examples</a></li>
+ <li><a href="./../../support.html">Support</a></li>
+ </ul>
+
+ <!-- Google CSE Search Box Begins -->
+ <FORM class="pull-right"
id="searchbox_010475492895890475512:_t4iqjrgx90"
action="http://www.google.com/cse">
+ <INPUT type="hidden" name="cx"
value="010475492895890475512:_t4iqjrgx90">
+ <INPUT type="hidden" name="cof" value="FORID:0">
+ <INPUT name="q" type="text" placeholder="Search">
+ </FORM>
+ <!--<SCRIPT type="text/javascript"
src="http://www.google.com/coop/cse/brand?form=searchbox_010475492895890475512:_t4iqjrgx90"></SCRIPT>-->
+ <!-- Google CSE Search Box Ends -->
+ </div>
+ </div>
+ </div>
+
+ <div class="container">
+
+
+<div class="row">
+ <div class="span8">
+ <small><a href="./../../index.html">Home</a> » <a
href="./../../examples-trunk/">Examples Trunk</a> » <a
href="./../../examples-trunk/async-postconstruct/">Async
Postconstruct</a></small><br>
+ </div>
+ <div class="span8">
+ </div>
+</div>
+
+<div class="page-header">
+<h1>@Asynchronous @PostConstruct
+
+ <div style="float: right; position: relative; bottom: -10px; ">
+ <a onclick="javascript:gpshare()" class="gp-share sprite" title="share
on Google+">share [gp]</a>
+ <a onclick="javascript:fbshare()" class="fb-share sprite" title="share
on Facebook">share [fb]</a>
+ <a onclick="javascript:twshare()" class="tw-share sprite" title="share
on Twitter">share [tw]</a>
+ <a data-toggle="modal" href="#edit" class="edit-page"
title="Contribute to this Page">contribute</a>
+ </div>
+</h1>
+</div>
+
+<p>Placing <code>@Asynchronous</code> on the <code>@PostConstruct</code> of an
EJB is not a supported part of Java EE, but this example shows a patter which
works just as well with little effort.</p>
+
+<pre><code>package org.superbiz.asyncpost;
+
+import javax.annotation.PostConstruct;
+import javax.ejb.EJB;
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.Singleton;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Future;
+
+import static java.util.concurrent.TimeUnit.SECONDS;
+
+@Singleton
+@Lock(LockType.READ)
+public class SlowStarter {
+
+ @EJB
+ private Executor executor;
+
+ private Future construct;
+
+ private String color;
+ private String shape;
+
+ @PostConstruct
+ private void construct() throws Exception {
+ construct = executor.submit(new Callable() {
+ @Override
+ public Object call() throws Exception {
+ Thread.sleep(SECONDS.toMillis(10));
+ SlowStarter.this.color = "orange";
+ SlowStarter.this.shape = "circle";
+ return null;
+ }
+ });
+ }
+
+ @AroundInvoke
+ private Object guaranteeConstructionComplete(InvocationContext context)
throws Exception {
+ construct.get();
+ return context.proceed();
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public String getShape() {
+ return shape;
+ }
+}
+</code></pre>
+
+<p>The <code>Executor</code> is a simple pattern, useful for many things,
which exposes an interface functionaly equivalent to
<code>java.util.concurrent.ExecutorService</code>, but
+with the underlying thread pool controlled by the container.</p>
+
+<pre><code>package org.superbiz.asyncpost;
+
+import javax.ejb.AsyncResult;
+import javax.ejb.Asynchronous;
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.Singleton;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Future;
+
+@Singleton
+@Lock(LockType.READ)
+public class Executor {
+
+ @Asynchronous
+ public <T> Future<T> submit(Callable<T> task) throws
Exception {
+ return new AsyncResult<T>(task.call());
+ }
+
+}
+</code></pre>
+
+<p>Finally a test case shows the usefulness of <code>@AroundInvoke</code> call
in our bean that calls <code>construct.get()</code></p>
+
+<pre><code>package org.superbiz.asyncpost;
+
+import junit.framework.Assert;
+import org.junit.Test;
+
+import javax.ejb.EJB;
+import javax.ejb.embeddable.EJBContainer;
+
+public class SlowStarterTest {
+
+ @EJB
+ private SlowStarter slowStarter;
+
+ @Test
+ public void test() throws Exception {
+
+ // Start the Container
+ EJBContainer.createEJBContainer().getContext().bind("inject", this);
+
+ // Immediately access the fields initialized in the PostConstruct
+ // This will fail without the @AroundInvoke call to construct.get()
+ Assert.assertEquals("orange", slowStarter.getColor());
+ Assert.assertEquals("circle", slowStarter.getShape());
+ }
+}
+</code></pre>
+
+
+<div class="page-header"> </div>
+<h4>APIs Used</h4>
+<ul><li><a
href="http://docs.oracle.com/javaee/6/api/javax/annotation/PostConstruct.html">javax.annotation.PostConstruct</a></li>
+<li><a
href="http://docs.oracle.com/javaee/6/api/javax/ejb/AsyncResult.html">javax.ejb.AsyncResult</a></li>
+<li><a
href="http://docs.oracle.com/javaee/6/api/javax/ejb/Asynchronous.html">javax.ejb.Asynchronous</a></li>
+<li><a
href="http://docs.oracle.com/javaee/6/api/javax/ejb/EJB.html">javax.ejb.EJB</a></li>
+<li><a
href="http://docs.oracle.com/javaee/6/api/javax/ejb/Lock.html">javax.ejb.Lock</a></li>
+<li><a
href="http://docs.oracle.com/javaee/6/api/javax/ejb/LockType.html">javax.ejb.LockType</a></li>
+<li><a
href="http://docs.oracle.com/javaee/6/api/javax/ejb/Singleton.html">javax.ejb.Singleton</a></li>
+<li><a
href="http://docs.oracle.com/javaee/6/api/javax/ejb/embeddable/EJBContainer.html">javax.ejb.embeddable.EJBContainer</a></li>
+<li><a
href="http://docs.oracle.com/javaee/6/api/javax/interceptor/AroundInvoke.html">javax.interceptor.AroundInvoke</a></li>
+<li><a
href="http://docs.oracle.com/javaee/6/api/javax/interceptor/AroundTimeout.html">javax.interceptor.AroundTimeout</a></li>
+<li><a
href="http://docs.oracle.com/javaee/6/api/javax/interceptor/InvocationContext.html">javax.interceptor.InvocationContext</a></li>
+</ul>
+
+<h3>Source</h3>
+ <ul>
+ <li>Apache <a
href="http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/async-postconstruct">async-postconstruct</a></li>
+ <li>Github <a
href="https://github.com/apache/tomee/tree/trunk/examples/async-postconstruct">async-postconstruct</a></li>
+ </ul>
+<pre>
+svn co
http://svn.apache.org/repos/asf/tomee/tomee/trunk/examples/async-postconstruct
+cd async-postconstruct
+mvn clean install
+</pre>
+
+
+ <div id="edit" class="modal hide fade in" style="display: none; ">
+ <div class="modal-header">
+ <a class="close" data-dismiss="modal">x</a>
+
+ <h3>Thank you for contributing to the documention!</h3>
+ </div>
+ <div class="modal-body">
+ <h4>Any help with the documentation is greatly
appreciated.</h4>
+ <p>All edits are reviewed before going live, so feel free to
do much more than fix typos or links. If you see a page that could benefit
from an entire rewrite, we'd be thrilled to review it. Don't be surprised if
we like it so much we ask you for help with other pages :)</p>
+ <small>NOTICE: unless indicated otherwise on the pages in
question, all editable content available from apache.org is presumed to be
licensed under the Apache License (AL) version 2.0 and hence all submissions to
apache.org treated as formal Contributions under the license terms.</small>
+ <!--[if gt IE 6]>
+ <h4>Internet Explorer Users</h4>
+ <p>If you are not an Apache committer, click the Yes link and
enter a <i>anonymous</i> for the username and leave the password empty</p>
+ <![endif]-->
+
+ </div>
+ <div class="modal-footer">
+ Do you have an Apache ID?
+ <a
href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))"
class="btn">Yes</a>
+ <a
href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))"
class="btn">No</a>
+ </div>
+ </div>
+ <script src="./../../resources/js/bootstrap-modal.js"></script>
+
+ <footer>
+ <p>Copyright © 2013 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>
+ </footer>
+
+ </div> <!-- /container -->
+
+ <!-- Javascript
+ ================================================== -->
+ <!-- Placed at the end of the document so the pages load faster -->
+ <script src="./../../resources/js/bootstrap-dropdown.js"></script>
+
+ </body>
+</html>
Added:
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/build.xml
==============================================================================
Binary file - no diff available.
Propchange:
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/build.xml
------------------------------------------------------------------------------
svn:mime-type = application/xml
Added:
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/pom.xml
==============================================================================
Binary file - no diff available.
Propchange:
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/pom.xml
------------------------------------------------------------------------------
svn:mime-type = application/xml
Added:
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/main/java/org/superbiz/asyncpost/Executor.java
==============================================================================
---
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/main/java/org/superbiz/asyncpost/Executor.java
(added)
+++
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/main/java/org/superbiz/asyncpost/Executor.java
Tue Jul 2 01:26:53 2013
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.superbiz.asyncpost;
+
+import javax.ejb.AsyncResult;
+import javax.ejb.Asynchronous;
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.Singleton;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Future;
+
+@Singleton
+@Lock(LockType.READ)
+public class Executor {
+
+ @Asynchronous
+ public <T> Future<T> submit(Callable<T> task) throws Exception {
+ return new AsyncResult<T>(task.call());
+ }
+
+}
Added:
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/main/java/org/superbiz/asyncpost/SlowStarter.java
==============================================================================
---
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/main/java/org/superbiz/asyncpost/SlowStarter.java
(added)
+++
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/main/java/org/superbiz/asyncpost/SlowStarter.java
Tue Jul 2 01:26:53 2013
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.superbiz.asyncpost;
+
+import javax.annotation.PostConstruct;
+import javax.ejb.EJB;
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.Singleton;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.AroundTimeout;
+import javax.interceptor.InvocationContext;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Future;
+
+import static java.util.concurrent.TimeUnit.SECONDS;
+
+@Singleton
+@Lock(LockType.READ)
+public class SlowStarter {
+
+ @EJB
+ private Executor executor;
+
+ private Future construct;
+
+ private String color;
+ private String shape;
+
+ @PostConstruct
+ private void construct() throws Exception {
+ construct = executor.submit(new Callable() {
+ @Override
+ public Object call() throws Exception {
+ Thread.sleep(SECONDS.toMillis(10));
+ SlowStarter.this.color = "orange";
+ SlowStarter.this.shape = "circle";
+ return null;
+ }
+ });
+ }
+
+ @AroundTimeout
+ @AroundInvoke
+ private Object guaranteeConstructionComplete(InvocationContext context)
throws Exception {
+ construct.get();
+ return context.proceed();
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public String getShape() {
+ return shape;
+ }
+}
Added:
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/test/java/org/superbiz/asyncpost/SlowStarterTest.java
==============================================================================
---
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/test/java/org/superbiz/asyncpost/SlowStarterTest.java
(added)
+++
websites/staging/tomee/trunk/content/examples-trunk/async-postconstruct/src/test/java/org/superbiz/asyncpost/SlowStarterTest.java
Tue Jul 2 01:26:53 2013
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.superbiz.asyncpost;
+
+import junit.framework.Assert;
+import org.junit.Test;
+
+import javax.ejb.EJB;
+import javax.ejb.embeddable.EJBContainer;
+
+public class SlowStarterTest {
+
+ @EJB
+ private SlowStarter slowStarter;
+
+ @Test
+ public void test() throws Exception {
+
+ // Start the Container
+ EJBContainer.createEJBContainer().getContext().bind("inject", this);
+
+ // Immediately access the fields initialized in the PostConstruct
+ // This will fail without the @AroundInvoke call to construct.get()
+ Assert.assertEquals("orange", slowStarter.getColor());
+ Assert.assertEquals("circle", slowStarter.getShape());
+ }
+}
Modified: websites/staging/tomee/trunk/content/examples-trunk/index.html
==============================================================================
--- websites/staging/tomee/trunk/content/examples-trunk/index.html (original)
+++ websites/staging/tomee/trunk/content/examples-trunk/index.html Tue Jul 2
01:26:53 2013
@@ -168,7 +168,8 @@ All the examples show code, but some are
<li><a href="async-methods/README.html">async-methods</a> *</li>
<li><a href="schedule-expression/README.html">schedule-expression</a> *</li>
<li><a href="schedule-methods/README.html">schedule-methods</a></li>
-<li><a href="interceptors/README.html">interceptors</a></div>
+<li><a href="interceptors/README.html">interceptors</a></li>
+<li><a href="async-postconstruct/README.html">async-postconstruct</a></div>
<div class="span-one-third"></p>
<h3>REST</h3></li>
Modified: websites/staging/tomee/trunk/content/examples-trunk/pom.xml
==============================================================================
Binary files - no diff available.