| <!DOCTYPE html> |
| <html lang="en"> |
| |
| <head> |
| <meta charset="UTF-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <title>Apache TomEE</title> |
| <meta name="description" |
| content="Apache TomEE is a lightweight, yet powerful, JavaEE Application server with feature rich tooling." /> |
| <meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" /> |
| <meta name="author" content="Luka Cvetinovic for Codrops" /> |
| <link rel="icon" href="../../../favicon.ico"> |
| <link rel="icon" type="image/png" href="../../../favicon.png"> |
| <meta name="msapplication-TileColor" content="#80287a"> |
| <meta name="theme-color" content="#80287a"> |
| <link rel="stylesheet" type="text/css" href="../../../css/normalize.css"> |
| <link rel="stylesheet" type="text/css" href="../../../css/bootstrap.css"> |
| <link rel="stylesheet" type="text/css" href="../../../css/owl.css"> |
| <link rel="stylesheet" type="text/css" href="../../../css/animate.css"> |
| <link rel="stylesheet" type="text/css" href="../../../fonts/font-awesome-4.1.0/css/font-awesome.min.css"> |
| <link rel="stylesheet" type="text/css" href="../../../fonts/eleganticons/et-icons.css"> |
| <link rel="stylesheet" type="text/css" href="../../../css/jqtree.css"> |
| <link rel="stylesheet" type="text/css" href="../../../css/idea.css"> |
| <link rel="stylesheet" type="text/css" href="../../../css/cardio.css"> |
| |
| <script type="text/javascript"> |
| |
| var _gaq = _gaq || []; |
| _gaq.push(['_setAccount', 'UA-2717626-1']); |
| _gaq.push(['_setDomainName', 'apache.org']); |
| _gaq.push(['_trackPageview']); |
| |
| (function() { |
| var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; |
| ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
| var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); |
| })(); |
| |
| </script> |
| </head> |
| |
| <body> |
| <div class="preloader"> |
| <img src="../../../img/loader.gif" alt="Preloader image"> |
| </div> |
| <nav class="navbar"> |
| <div class="container"> |
| <div class="row"> <div class="col-md-12"> |
| |
| <!-- Brand and toggle get grouped for better mobile display --> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| <a class="navbar-brand" href="/" 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<GreetingService.Greet>())).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<GreetingService.Greet>())).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/ -> org.apache.openejb.server.rest.InternalApplication@41ef317f |
| INFORMAÇÕES - Service URI: http://127.0.0.1:34073/test/greeting -> Pojo org.superbiz.rest.GreetingService |
| INFORMAÇÕES - GET http://127.0.0.1:34073/test/greeting -> Greet message() |
| INFORMAÇÕES - POST http://127.0.0.1:34073/test/greeting -> 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 |
| |
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?><greet><message>Hi REST!</message></greet> |
| 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/ -> org.apache.openejb.server.rest.InternalApplication@d53e82f6 |
| INFORMAÇÕES - Service URI: http://127.0.0.1:43963/test/greeting -> Pojo org.superbiz.rest.GreetingService |
| INFORMAÇÕES - GET http://127.0.0.1:43963/test/greeting -> Greet message() |
| INFORMAÇÕES - POST http://127.0.0.1:43963/test/greeting -> 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] |
| |
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?><request><value>Hi REST!</value></request> |
| ********************************************** |
| |
| 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 |
| |
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?><greet><message>hi rest!</message></greet> |
| 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/ -> org.apache.openejb.server.rest.InternalApplication@f39d9d50 |
| INFORMAÇÕES - Service URI: http://127.0.0.1:45805/test/greeting -> Pojo org.superbiz.rest.GreetingService |
| INFORMAÇÕES - GET http://127.0.0.1:45805/test/greeting -> Greet message() |
| INFORMAÇÕES - POST http://127.0.0.1:45805/test/greeting -> 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/ -> org.apache.openejb.server.rest.InternalApplication@28f17c3f |
| INFORMAÇÕES - Service URI: http://127.0.0.1:33139/test/greeting -> Pojo org.superbiz.rest.GreetingService |
| INFORMAÇÕES - GET http://127.0.0.1:33139/test/greeting -> Greet message() |
| INFORMAÇÕES - POST http://127.0.0.1:33139/test/greeting -> 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> |
| </div> |
| <div class="col-sm-6 text-center-mobile"> |
| <div class="row opening-hours"> |
| <div class="col-sm-3 text-center-mobile"> |
| <h5><a href="../../../latest/docs/" class="white">Documentation</a></h5> |
| <ul class="list-unstyled"> |
| <li><a href="../../../latest/docs/admin/configuration/index.html" class="regular light-white">How to configure</a></li> |
| <li><a href="../../../latest/docs/admin/file-layout.html" class="regular light-white">Dir. Structure</a></li> |
| <li><a href="../../../latest/docs/developer/testing/index.html" class="regular light-white">Testing</a></li> |
| <li><a href="../../../latest/docs/admin/cluster/index.html" class="regular light-white">Clustering</a></li> |
| </ul> |
| </div> |
| <div class="col-sm-3 text-center-mobile"> |
| <h5><a href="../../../latest/examples/" class="white">Examples</a></h5> |
| <ul class="list-unstyled"> |
| <li><a href="../../../latest/examples/simple-cdi-interceptor.html" class="regular light-white">CDI Interceptor</a></li> |
| <li><a href="../../../latest/examples/rest-cdi.html" class="regular light-white">REST with CDI</a></li> |
| <li><a href="../../../latest/examples/ejb-examples.html" class="regular light-white">EJB</a></li> |
| <li><a href="../../../latest/examples/jsf-managedBean-and-ejb.html" class="regular light-white">JSF</a></li> |
| </ul> |
| </div> |
| <div class="col-sm-3 text-center-mobile"> |
| <h5><a href="../../../community/index.html" class="white">Community</a></h5> |
| <ul class="list-unstyled"> |
| <li><a href="../../../community/contributors.html" class="regular light-white">Contributors</a></li> |
| <li><a href="../../../community/social.html" class="regular light-white">Social</a></li> |
| <li><a href="../../../community/sources.html" class="regular light-white">Sources</a></li> |
| </ul> |
| </div> |
| <div class="col-sm-3 text-center-mobile"> |
| <h5><a href="../../../security/index.html" class="white">Security</a></h5> |
| <ul class="list-unstyled"> |
| <li><a href="http://apache.org/security" target="_blank" class="regular light-white">Apache Security</a></li> |
| <li><a href="http://apache.org/security/projects.html" target="_blank" class="regular light-white">Security Projects</a></li> |
| <li><a href="http://cve.mitre.org" target="_blank" class="regular light-white">CVE</a></li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="row bottom-footer text-center-mobile"> |
| <div class="col-sm-12 light-white"> |
| <p>Copyright © 1999-2021 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> |
| |