blob: f8ac3a656dc8207611adb3dcb09c0989b0e36340 [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">
<!-- Matomo -->
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function () {
var u = "//matomo.privacy.apache.org/";
_paq.push(['setTrackerUrl', u + 'matomo.php']);
_paq.push(['setSiteId', '5']);
var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
g.async = true;
g.src = u + 'matomo.js';
s.parentNode.insertBefore(g, s);
})();
<!-- End Matomo Code -->
</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="/" title="Apache TomEE">
<span>
<img
src="../../../img/apache_tomee-logo.svg"
onerror="this.src='../../../img/apache_tomee-logo.jpg'"
height="50"
>
</span>
</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 class="btn btn-accent accent-orange no-shadow" href="../../../download.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>REST simples com CDI</h1>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Definir um serviço REST é bastante fácil, basta adicionar a anotação <code>@Path</code> a uma
classe define então nos métodos o método HTTP a ser usado (<code>@GET</code>, <code>@POST</code>,…).</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_serviço_rest_path_produces_consumes">Serviço REST: @Path, @Produces, @Consumes</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Aqui nós temos um REST simples, anotamos a classe com <code>@Path("/greeting")</code> para indicar a rota correspondente a classe <code>GreetingService</code>. Definimos <code>message()</code> como <code>@GET</code> e <code>lowerCase()</code> como <code>@POST</code> para esta rota <code>/greeting</code> e fazemos a injeçao da classe <code>Greeting</code> usando a anotação <code>@Inject</code>. Pronto, temos um serviço! Simples não?</p>
</div>
<div class="paragraph">
<p>Atual linhas:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })</code></pre>
</div>
</div>
<div class="paragraph">
<p>são opcionais, pois é a configuração padrão. E essas linhas podem
também seja configurado pelo método se você precisar ser mais preciso.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">@Path("/greeting")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public class GreetingService {
@Inject
Greeting greeting;
@GET
public Greet message() {
return new Greet("Hi REST!");
}
@POST
public Greet lowerCase(final Request message) {
return new Greet(greeting.doSomething(message.getValue()));
}
@XmlRootElement // for xml only, useless for json (johnzon is the default)
public static class Greet {
private String message;
public Greet(final String message) {
this.message = message;
}
public Greet() {
this(null);
}
public String getMessage() {
return message;
}
public void setMessage(final String message) {
this.message = message;
}
}
}</code></pre>
</div>
</div>
<div class="sect2">
<h3 id="_teste_para_o_serviço_jaxrs">Teste para o serviço JAXRS</h3>
<div class="paragraph">
<p>Usamos o OpenEJB ApplicationComposer para facilitar o teste.</p>
</div>
<div class="paragraph">
<p>A ideia é primeiro ativar os serviços jaxrs. Isto é feito usando a anotação <code>@EnableServices</code>.</p>
</div>
<div class="paragraph">
<p>Então nós criamos a aplicação simplesmente retornando um objeto representando o web.xml. Aqui nós simplesmente o usamos para definir o contexto raiz mas você também pode usar para definir sua aplicação REST também. E para completar a aplicação nós adicionamos a anotação <code>@Classes</code> para definir o conjunto de classes a ser utilizado nesse app.</p>
</div>
<div class="paragraph">
<p>Finalmente para testar nós usamos o client API do cfx para chamar o serviço REST nos métodos get() e post().</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
para mostrar que usamos JSON ou XML, dependendo do método de teste
ativado em EnableServices o atributo httpDebug que imprime o
mensagens http nos logs.
</td>
</tr>
</table>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package org.superbiz.rest;
import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.johnzon.jaxrs.JohnzonProvider;
import org.apache.openejb.jee.WebApp;
import org.apache.openejb.junit.ApplicationComposer;
import org.apache.openejb.testing.Classes;
import org.apache.openejb.testing.Configuration;
import org.apache.openejb.testing.EnableServices;
import org.apache.openejb.testing.Module;
import org.apache.openejb.testng.PropertiesBuilder;
import org.apache.openejb.util.NetworkUtil;
import org.junit.Test;
import org.junit.runner.RunWith;
import jakarta.ws.rs.core.MediaType;
import java.io.IOException;
import java.util.Properties;
import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
@EnableServices(value = "jaxrs", httpDebug = true)
@RunWith(ApplicationComposer.class)
public class GreetingServiceTest {
private int port;
@Configuration
public Properties randomPort() {
port = NetworkUtil.getNextAvailablePort();
return new PropertiesBuilder().p("httpejbd.port", Integer.toString(port)).build();
}
@Module
@Classes(value = {GreetingService.class, Greeting.class}, cdi = true) // This enables the CDI magic
public WebApp app() {
return new WebApp().contextRoot("test");
}
@Test
public void getXml() throws IOException {
final String message = WebClient.create("http://localhost:" + port).path("/test/greeting/")
.accept(MediaType.APPLICATION_XML_TYPE)
.get(GreetingService.Greet.class).getMessage();
assertEquals("Hi REST!", message);
}
@Test
public void postXml() throws IOException {
final String message = WebClient.create("http://localhost:" + port).path("/test/greeting/")
.accept(MediaType.APPLICATION_XML_TYPE)
.type(MediaType.APPLICATION_XML_TYPE)
.post(new Request("Hi REST!"), GreetingService.Greet.class).getMessage();
assertEquals("hi rest!", message);
}
@Test
public void getJson() throws IOException {
final String message = WebClient.create("http://localhost:" + port, asList(new JohnzonProvider&lt;GreetingService.Greet&gt;())).path("/test/greeting/")
.accept(MediaType.APPLICATION_JSON_TYPE)
.get(GreetingService.Greet.class).getMessage();
assertEquals("Hi REST!", message);
}
@Test
public void postJson() throws IOException {
final String message = WebClient.create("http://localhost:" + port, asList(new JohnzonProvider&lt;GreetingService.Greet&gt;())).path("/test/greeting/")
.accept(MediaType.APPLICATION_JSON_TYPE)
.type(MediaType.APPLICATION_JSON_TYPE)
.post(new Request("Hi REST!"), GreetingService.Greet.class).getMessage();
assertEquals("hi rest!", message);
}
}</code></pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_executando">Executando</h2>
<div class="sectionbody">
<div class="paragraph">
<p>A execução do exemplo é bastante simples. No diretório <code>rest-cdi</code>, execute:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">$ mvn clean install</code></pre>
</div>
</div>
<div class="paragraph">
<p>O que deve criar uma saída como a seguir.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.superbiz.rest.GreetingServiceTest
INFORMAÇÕES - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
INFORMAÇÕES - Succeeded in installing singleton service
INFORMAÇÕES - Cannot find the configuration file [conf/openejb.xml]. Will attempt to create one for the beans deployed.
INFORMAÇÕES - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
INFORMAÇÕES - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
INFORMAÇÕES - Creating TransactionManager(id=Default Transaction Manager)
INFORMAÇÕES - Creating SecurityService(id=Default Security Service)
INFORMAÇÕES - Initializing network services
INFORMAÇÕES - Creating ServerService(id=cxf-rs)
INFORMAÇÕES - Creating ServerService(id=httpejbd)
INFORMAÇÕES - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
INFORMAÇÕES - Using 'print=true'
DETALHADO - Using default '.xml=false'
DETALHADO - Using default 'stream.count=false'
INFORMAÇÕES - Initializing network services
INFORMAÇÕES - ** Bound Services **
INFORMAÇÕES - NAME IP PORT
INFORMAÇÕES - httpejbd 127.0.0.1 34073
INFORMAÇÕES - -------
INFORMAÇÕES - Ready!
INFORMAÇÕES - Configuring enterprise application: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
INFORMAÇÕES - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
INFORMAÇÕES - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
INFORMAÇÕES - Creating Container(id=Default Managed Container)
INFORMAÇÕES - Using directory /tmp for stateful session passivation
INFORMAÇÕES - Enterprise application "/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest" loaded.
INFORMAÇÕES - Creating dedicated application classloader for GreetingServiceTest
INFORMAÇÕES - Assembling app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
INFORMAÇÕES - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
INFORMAÇÕES - Some Principal APIs could not be loaded: org.eclipse.microprofile.jwt.JsonWebToken out of org.eclipse.microprofile.jwt.JsonWebToken not found
INFORMAÇÕES - OpenWebBeans Container is starting...
INFORMAÇÕES - Adding OpenWebBeansPlugin : [CdiPlugin]
INFORMAÇÕES - All injection points were validated successfully.
INFORMAÇÕES - OpenWebBeans Container has started, it took 467 ms.
INFORMAÇÕES - Using readers:
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@97c248d8
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.FormEncodingProvider@6fb414ed
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.MultipartProvider@507dc827
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.SourceProvider@6f8d0e9a
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@58adf11a
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementProvider@5bcbcc65
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.StringTextProvider@bfe1ceb1
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.BinaryDataProvider@8ef2b2bc
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.DataSourceProvider@2b686cbd
INFORMAÇÕES - Using writers:
INFORMAÇÕES - org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@1bcbf14b
INFORMAÇÕES - org.apache.cxf.jaxrs.nio.NioMessageBodyWriter@4752d400
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.StringTextProvider@bfe1ceb1
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@58adf11a
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@97c248d8
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.FormEncodingProvider@6fb414ed
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.MultipartProvider@507dc827
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.SourceProvider@6f8d0e9a
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementProvider@5bcbcc65
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.BinaryDataProvider@8ef2b2bc
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.DataSourceProvider@2b686cbd
INFORMAÇÕES - Using exception mappers:
INFORMAÇÕES - org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper@3ede0832
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.EJBExceptionMapper@384c8ae0
INFORMAÇÕES - org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@fb5c938e
INFORMAÇÕES - REST Application: http://127.0.0.1:34073/test/ -&gt; org.apache.openejb.server.rest.InternalApplication@41ef317f
INFORMAÇÕES - Service URI: http://127.0.0.1:34073/test/greeting -&gt; Pojo org.superbiz.rest.GreetingService
INFORMAÇÕES - GET http://127.0.0.1:34073/test/greeting -&gt; Greet message()
INFORMAÇÕES - POST http://127.0.0.1:34073/test/greeting -&gt; Greet lowerCase(Request)
INFORMAÇÕES - Deployed Application(path=/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest)
DETALHADO - ******************* REQUEST ******************
GET http://localhost:34073/test/greeting/
Accept=[application/xml]
Cache-Control=[no-cache]
User-Agent=[Apache-CXF/3.3.6]
Connection=[keep-alive]
Host=[localhost:34073]
Pragma=[no-cache]
**********************************************
DETALHADO - HTTP/1.1 200 OK
Server: OpenEJB/8.0.5-SNAPSHOT Linux/5.0.0-23-generic (amd64)
Connection: close
Content-Length: 97
Date: Sat, 01 Aug 2020 22:56:06 GMT
Content-Type: application/xml
&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;&lt;greet&gt;&lt;message&gt;Hi REST!&lt;/message&gt;&lt;/greet&gt;
INFORMAÇÕES - Undeploying app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
INFORMAÇÕES - Stopping network services
INFORMAÇÕES - Stopping server services
INFORMAÇÕES - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
INFORMAÇÕES - Succeeded in installing singleton service
INFORMAÇÕES - Cannot find the configuration file [conf/openejb.xml]. Will attempt to create one for the beans deployed.
INFORMAÇÕES - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
INFORMAÇÕES - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
INFORMAÇÕES - Creating TransactionManager(id=Default Transaction Manager)
INFORMAÇÕES - Creating SecurityService(id=Default Security Service)
INFORMAÇÕES - Initializing network services
INFORMAÇÕES - Creating ServerService(id=cxf-rs)
INFORMAÇÕES - Creating ServerService(id=httpejbd)
INFORMAÇÕES - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
INFORMAÇÕES - Using 'print=true'
DETALHADO - Using default '.xml=false'
DETALHADO - Using default 'stream.count=false'
INFORMAÇÕES - Initializing network services
INFORMAÇÕES - ** Bound Services **
INFORMAÇÕES - NAME IP PORT
INFORMAÇÕES - httpejbd 127.0.0.1 43963
INFORMAÇÕES - -------
INFORMAÇÕES - Ready!
INFORMAÇÕES - Configuring enterprise application: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
INFORMAÇÕES - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
INFORMAÇÕES - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
INFORMAÇÕES - Creating Container(id=Default Managed Container)
INFORMAÇÕES - Using directory /tmp for stateful session passivation
INFORMAÇÕES - Enterprise application "/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest" loaded.
INFORMAÇÕES - Creating dedicated application classloader for GreetingServiceTest
INFORMAÇÕES - Assembling app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
INFORMAÇÕES - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
INFORMAÇÕES - Some Principal APIs could not be loaded: org.eclipse.microprofile.jwt.JsonWebToken out of org.eclipse.microprofile.jwt.JsonWebToken not found
INFORMAÇÕES - OpenWebBeans Container is starting...
INFORMAÇÕES - Adding OpenWebBeansPlugin : [CdiPlugin]
INFORMAÇÕES - All injection points were validated successfully.
INFORMAÇÕES - OpenWebBeans Container has started, it took 91 ms.
INFORMAÇÕES - Using readers:
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@6133824
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.FormEncodingProvider@e9e70387
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.MultipartProvider@5f76058f
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.SourceProvider@20ea2c24
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@b4f12840
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementProvider@5aa0cf6f
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.StringTextProvider@4259015f
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.BinaryDataProvider@40966367
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.DataSourceProvider@6222567f
INFORMAÇÕES - Using writers:
INFORMAÇÕES - org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@3a13a4fb
INFORMAÇÕES - org.apache.cxf.jaxrs.nio.NioMessageBodyWriter@4c42f2bd
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.StringTextProvider@4259015f
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@b4f12840
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@6133824
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.FormEncodingProvider@e9e70387
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.MultipartProvider@5f76058f
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.SourceProvider@20ea2c24
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementProvider@5aa0cf6f
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.BinaryDataProvider@40966367
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.DataSourceProvider@6222567f
INFORMAÇÕES - Using exception mappers:
INFORMAÇÕES - org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper@573fcce9
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.EJBExceptionMapper@b1374405
INFORMAÇÕES - org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@59fe23e0
INFORMAÇÕES - REST Application: http://127.0.0.1:43963/test/ -&gt; org.apache.openejb.server.rest.InternalApplication@d53e82f6
INFORMAÇÕES - Service URI: http://127.0.0.1:43963/test/greeting -&gt; Pojo org.superbiz.rest.GreetingService
INFORMAÇÕES - GET http://127.0.0.1:43963/test/greeting -&gt; Greet message()
INFORMAÇÕES - POST http://127.0.0.1:43963/test/greeting -&gt; Greet lowerCase(Request)
INFORMAÇÕES - Deployed Application(path=/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest)
DETALHADO - ******************* REQUEST ******************
POST http://localhost:43963/test/greeting/
Accept=[application/xml]
Cache-Control=[no-cache]
User-Agent=[Apache-CXF/3.3.6]
Connection=[keep-alive]
Host=[localhost:43963]
Pragma=[no-cache]
Content-Length=[97]
Content-Type=[application/xml]
&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;&lt;request&gt;&lt;value&gt;Hi REST!&lt;/value&gt;&lt;/request&gt;
**********************************************
DETALHADO - HTTP/1.1 200 OK
Server: OpenEJB/8.0.5-SNAPSHOT Linux/5.0.0-23-generic (amd64)
Connection: close
Content-Length: 97
Date: Sat, 01 Aug 2020 22:56:07 GMT
Content-Type: application/xml
&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;&lt;greet&gt;&lt;message&gt;hi rest!&lt;/message&gt;&lt;/greet&gt;
INFORMAÇÕES - Undeploying app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
INFORMAÇÕES - Stopping network services
INFORMAÇÕES - Stopping server services
INFORMAÇÕES - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
INFORMAÇÕES - Succeeded in installing singleton service
INFORMAÇÕES - Cannot find the configuration file [conf/openejb.xml]. Will attempt to create one for the beans deployed.
INFORMAÇÕES - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
INFORMAÇÕES - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
INFORMAÇÕES - Creating TransactionManager(id=Default Transaction Manager)
INFORMAÇÕES - Creating SecurityService(id=Default Security Service)
INFORMAÇÕES - Initializing network services
INFORMAÇÕES - Creating ServerService(id=cxf-rs)
GRAVE - MBean Object org.apache.cxf.bus.extension.ExtensionManagerBus@3197c5e9 register to MBeanServer failed : javax.management.InstanceAlreadyExistsException: org.apache.cxf:bus.id=openejb.cxf.bus,type=Bus,instance.id=832030185
INFORMAÇÕES - Creating ServerService(id=httpejbd)
INFORMAÇÕES - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
INFORMAÇÕES - Using 'print=true'
DETALHADO - Using default '.xml=false'
DETALHADO - Using default 'stream.count=false'
INFORMAÇÕES - Initializing network services
INFORMAÇÕES - ** Bound Services **
INFORMAÇÕES - NAME IP PORT
INFORMAÇÕES - httpejbd 127.0.0.1 45805
INFORMAÇÕES - -------
INFORMAÇÕES - Ready!
INFORMAÇÕES - Configuring enterprise application: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
INFORMAÇÕES - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
INFORMAÇÕES - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
INFORMAÇÕES - Creating Container(id=Default Managed Container)
INFORMAÇÕES - Using directory /tmp for stateful session passivation
INFORMAÇÕES - Enterprise application "/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest" loaded.
INFORMAÇÕES - Creating dedicated application classloader for GreetingServiceTest
INFORMAÇÕES - Assembling app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
INFORMAÇÕES - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
INFORMAÇÕES - Some Principal APIs could not be loaded: org.eclipse.microprofile.jwt.JsonWebToken out of org.eclipse.microprofile.jwt.JsonWebToken not found
INFORMAÇÕES - OpenWebBeans Container is starting...
INFORMAÇÕES - Adding OpenWebBeansPlugin : [CdiPlugin]
INFORMAÇÕES - All injection points were validated successfully.
INFORMAÇÕES - OpenWebBeans Container has started, it took 79 ms.
INFORMAÇÕES - Using readers:
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@8cb7376d
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.FormEncodingProvider@9499976b
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.MultipartProvider@1058a47e
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.SourceProvider@3cd3203
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@1116af37
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementProvider@d3c0684e
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.StringTextProvider@8a06ad8d
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.BinaryDataProvider@5ab112cb
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.DataSourceProvider@cd500c53
INFORMAÇÕES - Using writers:
INFORMAÇÕES - org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@1606be91
INFORMAÇÕES - org.apache.cxf.jaxrs.nio.NioMessageBodyWriter@6b980ff2
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.StringTextProvider@8a06ad8d
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@1116af37
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@8cb7376d
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.FormEncodingProvider@9499976b
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.MultipartProvider@1058a47e
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.SourceProvider@3cd3203
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementProvider@d3c0684e
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.BinaryDataProvider@5ab112cb
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.DataSourceProvider@cd500c53
INFORMAÇÕES - Using exception mappers:
INFORMAÇÕES - org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper@c0bb1fa5
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.EJBExceptionMapper@395031ad
INFORMAÇÕES - org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@67a5a4bb
INFORMAÇÕES - REST Application: http://127.0.0.1:45805/test/ -&gt; org.apache.openejb.server.rest.InternalApplication@f39d9d50
INFORMAÇÕES - Service URI: http://127.0.0.1:45805/test/greeting -&gt; Pojo org.superbiz.rest.GreetingService
INFORMAÇÕES - GET http://127.0.0.1:45805/test/greeting -&gt; Greet message()
INFORMAÇÕES - POST http://127.0.0.1:45805/test/greeting -&gt; Greet lowerCase(Request)
INFORMAÇÕES - Deployed Application(path=/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest)
DETALHADO - ******************* REQUEST ******************
GET http://localhost:45805/test/greeting/
Accept=[application/json]
Cache-Control=[no-cache]
User-Agent=[Apache-CXF/3.3.6]
Connection=[keep-alive]
Host=[localhost:45805]
Pragma=[no-cache]
**********************************************
DETALHADO - HTTP/1.1 200 OK
Server: OpenEJB/8.0.5-SNAPSHOT Linux/5.0.0-23-generic (amd64)
Connection: close
Content-Length: 22
Date: Sat, 01 Aug 2020 22:56:07 GMT
Content-Type: application/json
{"message":"Hi REST!"}
INFORMAÇÕES - Undeploying app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
INFORMAÇÕES - Stopping network services
INFORMAÇÕES - Stopping server services
INFORMAÇÕES - Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
INFORMAÇÕES - Succeeded in installing singleton service
INFORMAÇÕES - Cannot find the configuration file [conf/openejb.xml]. Will attempt to create one for the beans deployed.
INFORMAÇÕES - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
INFORMAÇÕES - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
INFORMAÇÕES - Creating TransactionManager(id=Default Transaction Manager)
INFORMAÇÕES - Creating SecurityService(id=Default Security Service)
INFORMAÇÕES - Initializing network services
INFORMAÇÕES - Creating ServerService(id=cxf-rs)
GRAVE - MBean Object org.apache.cxf.bus.extension.ExtensionManagerBus@3197c5e9 register to MBeanServer failed : javax.management.InstanceAlreadyExistsException: org.apache.cxf:bus.id=openejb.cxf.bus,type=Bus,instance.id=832030185
INFORMAÇÕES - Creating ServerService(id=httpejbd)
INFORMAÇÕES - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
INFORMAÇÕES - Using 'print=true'
DETALHADO - Using default '.xml=false'
DETALHADO - Using default 'stream.count=false'
INFORMAÇÕES - Initializing network services
INFORMAÇÕES - ** Bound Services **
INFORMAÇÕES - NAME IP PORT
INFORMAÇÕES - httpejbd 127.0.0.1 33139
INFORMAÇÕES - -------
INFORMAÇÕES - Ready!
INFORMAÇÕES - Configuring enterprise application: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
INFORMAÇÕES - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
INFORMAÇÕES - Auto-creating a container for bean org.superbiz.rest.GreetingServiceTest: Container(type=MANAGED, id=Default Managed Container)
INFORMAÇÕES - Creating Container(id=Default Managed Container)
INFORMAÇÕES - Using directory /tmp for stateful session passivation
INFORMAÇÕES - Enterprise application "/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest" loaded.
INFORMAÇÕES - Creating dedicated application classloader for GreetingServiceTest
INFORMAÇÕES - Assembling app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
INFORMAÇÕES - Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@f52a8185
INFORMAÇÕES - Some Principal APIs could not be loaded: org.eclipse.microprofile.jwt.JsonWebToken out of org.eclipse.microprofile.jwt.JsonWebToken not found
INFORMAÇÕES - OpenWebBeans Container is starting...
INFORMAÇÕES - Adding OpenWebBeansPlugin : [CdiPlugin]
INFORMAÇÕES - All injection points were validated successfully.
INFORMAÇÕES - OpenWebBeans Container has started, it took 78 ms.
INFORMAÇÕES - Using readers:
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@e138884c
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.FormEncodingProvider@47d59cc8
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.MultipartProvider@8b1ed8f2
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.SourceProvider@63562d8b
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@ee828039
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementProvider@6a973a94
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.StringTextProvider@68e11edb
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.BinaryDataProvider@4eeaa949
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.DataSourceProvider@c1300ce1
INFORMAÇÕES - Using writers:
INFORMAÇÕES - org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@98de0e5d
INFORMAÇÕES - org.apache.cxf.jaxrs.nio.NioMessageBodyWriter@ae6701a9
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.StringTextProvider@68e11edb
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@ee828039
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@e138884c
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.FormEncodingProvider@47d59cc8
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.MultipartProvider@8b1ed8f2
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.SourceProvider@63562d8b
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.JAXBElementProvider@6a973a94
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@ca404f1a
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@c493f575
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.BinaryDataProvider@4eeaa949
INFORMAÇÕES - org.apache.cxf.jaxrs.provider.DataSourceProvider@c1300ce1
INFORMAÇÕES - Using exception mappers:
INFORMAÇÕES - org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper@b7aa4d1f
INFORMAÇÕES - org.apache.openejb.server.cxf.rs.EJBExceptionMapper@36e433da
INFORMAÇÕES - org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@b2d74161
INFORMAÇÕES - REST Application: http://127.0.0.1:33139/test/ -&gt; org.apache.openejb.server.rest.InternalApplication@28f17c3f
INFORMAÇÕES - Service URI: http://127.0.0.1:33139/test/greeting -&gt; Pojo org.superbiz.rest.GreetingService
INFORMAÇÕES - GET http://127.0.0.1:33139/test/greeting -&gt; Greet message()
INFORMAÇÕES - POST http://127.0.0.1:33139/test/greeting -&gt; Greet lowerCase(Request)
INFORMAÇÕES - Deployed Application(path=/home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest)
DETALHADO - ******************* REQUEST ******************
POST http://localhost:33139/test/greeting/
Accept=[application/json]
Cache-Control=[no-cache]
User-Agent=[Apache-CXF/3.3.6]
Connection=[keep-alive]
Host=[localhost:33139]
Pragma=[no-cache]
Content-Length=[20]
Content-Type=[application/json]
{"value":"Hi REST!"}
**********************************************
DETALHADO - HTTP/1.1 200 OK
Server: OpenEJB/8.0.5-SNAPSHOT Linux/5.0.0-23-generic (amd64)
Connection: close
Content-Length: 22
Date: Sat, 01 Aug 2020 22:56:08 GMT
Content-Type: application/json
{"message":"hi rest!"}
INFORMAÇÕES - Undeploying app: /home/daniel/git/apache/tomee/examples/rest-cdi/GreetingServiceTest
INFORMAÇÕES - Stopping network services
INFORMAÇÕES - Stopping server services
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.995 sec
Results :
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_apis_used">APIs Used</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><a href="../../../tomee-9.0/javadoc/org/apache/openejb/jee/WebApp.html">org.apache.openejb.jee.WebApp</a></p>
</li>
<li>
<p><a href="../../../tomee-9.0/javadoc/org/apache/openejb/junit/ApplicationComposer.html">org.apache.openejb.junit.ApplicationComposer</a></p>
</li>
<li>
<p><a href="../../../tomee-9.0/javadoc/org/apache/openejb/testing/Classes.html">org.apache.openejb.testing.Classes</a></p>
</li>
<li>
<p><a href="../../../tomee-9.0/javadoc/org/apache/openejb/testing/Configuration.html">org.apache.openejb.testing.Configuration</a></p>
</li>
<li>
<p><a href="../../../tomee-9.0/javadoc/org/apache/openejb/testing/EnableServices.html">org.apache.openejb.testing.EnableServices</a></p>
</li>
<li>
<p><a href="../../../tomee-9.0/javadoc/org/apache/openejb/testing/Module.html">org.apache.openejb.testing.Module</a></p>
</li>
<li>
<p><a href="../../../tomee-9.0/javadoc/org/apache/openejb/testng/PropertiesBuilder.html">org.apache.openejb.testng.PropertiesBuilder</a></p>
</li>
<li>
<p><a href="../../../tomee-9.0/javadoc/org/apache/openejb/util/NetworkUtil.html">org.apache.openejb.util.NetworkUtil</a></p>
</li>
<li>
<p><a href="../../../jakartaee-10.0/javadoc/jakarta/ws/rs/Consumes.html">jakarta.ws.rs.Consumes</a></p>
</li>
<li>
<p><a href="../../../jakartaee-10.0/javadoc/jakarta/ws/rs/GET.html">jakarta.ws.rs.GET</a></p>
</li>
<li>
<p><a href="../../../jakartaee-10.0/javadoc/jakarta/ws/rs/POST.html">jakarta.ws.rs.POST</a></p>
</li>
<li>
<p><a href="../../../jakartaee-10.0/javadoc/jakarta/ws/rs/Path.html">jakarta.ws.rs.Path</a></p>
</li>
<li>
<p><a href="../../../jakartaee-10.0/javadoc/jakarta/ws/rs/Produces.html">jakarta.ws.rs.Produces</a></p>
</li>
<li>
<p><a href="../../../jakartaee-10.0/javadoc/jakarta/ws/rs/core/MediaType.html">jakarta.ws.rs.core.MediaType</a></p>
</li>
<li>
<p><a href="../../../jakartaee-10.0/javadoc/jakarta/xml/bind/annotation/XmlRootElement.html">jakarta.xml.bind.annotation.XmlRootElement</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="margin-bottom: 30px;"></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>
</ul>
<h5 class="light regular light-white">
<a href="../../../privacy-policy.html" class="white">Privacy Policy</a>
</h5>
</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="https://apache.org/security" target="_blank" class="regular light-white">Apache Security</a></li>
<li><a href="https://apache.org/security/projects.html" target="_blank" class="regular light-white">Security Projects</a></li>
<li><a href="https://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-2022 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>