<!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 javax.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="../../../latest/javadoc/org/apache/openejb/jee/WebApp.html">org.apache.openejb.jee.WebApp</a></p>
</li>
<li>
<p><a href="../../../latest/javadoc/org/apache/openejb/junit/ApplicationComposer.html">org.apache.openejb.junit.ApplicationComposer</a></p>
</li>
<li>
<p><a href="../../../latest/javadoc/org/apache/openejb/testing/Classes.html">org.apache.openejb.testing.Classes</a></p>
</li>
<li>
<p><a href="../../../latest/javadoc/org/apache/openejb/testing/Configuration.html">org.apache.openejb.testing.Configuration</a></p>
</li>
<li>
<p><a href="../../../latest/javadoc/org/apache/openejb/testing/EnableServices.html">org.apache.openejb.testing.EnableServices</a></p>
</li>
<li>
<p><a href="../../../latest/javadoc/org/apache/openejb/testing/Module.html">org.apache.openejb.testing.Module</a></p>
</li>
<li>
<p><a href="../../../latest/javadoc/org/apache/openejb/testng/PropertiesBuilder.html">org.apache.openejb.testng.PropertiesBuilder</a></p>
</li>
<li>
<p><a href="../../../latest/javadoc/org/apache/openejb/util/NetworkUtil.html">org.apache.openejb.util.NetworkUtil</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>

