Added: tomee/site/trunk/content/master/pt/examples/cdi-session-scope.html URL: http://svn.apache.org/viewvc/tomee/site/trunk/content/master/pt/examples/cdi-session-scope.html?rev=1866555&view=auto ============================================================================== --- tomee/site/trunk/content/master/pt/examples/cdi-session-scope.html (added) +++ tomee/site/trunk/content/master/pt/examples/cdi-session-scope.html Sat Sep 7 14:25:49 2019 @@ -0,0 +1,362 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Apache TomEE</title> + <meta name="description" + content="Apache TomEE is a lightweight, yet powerful, JavaEE Application server with feature rich tooling." /> + <meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" /> + <meta name="author" content="Luka Cvetinovic for Codrops" /> + <link rel="icon" href="../../../favicon.ico"> + <link rel="icon" type="image/png" href="../../../favicon.png"> + <meta name="msapplication-TileColor" content="#80287a"> + <meta name="theme-color" content="#80287a"> + <link rel="stylesheet" type="text/css" href="../../../css/normalize.css"> + <link rel="stylesheet" type="text/css" href="../../../css/bootstrap.css"> + <link rel="stylesheet" type="text/css" href="../../../css/owl.css"> + <link rel="stylesheet" type="text/css" href="../../../css/animate.css"> + <link rel="stylesheet" type="text/css" href="../../../fonts/font-awesome-4.1.0/css/font-awesome.min.css"> + <link rel="stylesheet" type="text/css" href="../../../fonts/eleganticons/et-icons.css"> + <link rel="stylesheet" type="text/css" href="../../../css/jqtree.css"> + <link rel="stylesheet" type="text/css" href="../../../css/idea.css"> + <link rel="stylesheet" type="text/css" href="../../../css/cardio.css"> + + <script type="text/javascript"> + + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-2717626-1']); + _gaq.push(['_setDomainName', 'apache.org']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + + </script> +</head> + +<body> + <div class="preloader"> + <img src="../../../img/loader.gif" alt="Preloader image"> + </div> + <nav class="navbar"> + <div class="container"> + <div class="row"> <div class="col-md-12"> + + <!-- Brand and toggle get grouped for better mobile display --> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand" href="/"> + <span> + + + <img src="../../../img/logo-active.png"> + + + </span> + Apache TomEE + </a> + </div> + <!-- Collect the nav links, forms, and other content for toggling --> + <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> + <ul class="nav navbar-nav navbar-right main-nav"> + <li><a href="../../../docs.html">Documentation</a></li> + <li><a href="../../../community/index.html">Community</a></li> + <li><a href="../../../security/security.html">Security</a></li> + <li><a href="../../../download-ng.html">Downloads</a></li> + </ul> + </div> + <!-- /.navbar-collapse --> + </div></div> + </div> + <!-- /.container-fluid --> + </nav> + + + <div id="main-block" class="container main-block"> + <div class="row title"> + <div class="col-md-12"> + <div class='page-header'> + + <h1>CDI @SessionScoped</h1> + </div> + </div> + </div> + <div class="row"> + + <div class="col-md-12"> + <div id="preamble"> +<div class="sectionbody"> +<div class="paragraph"> +<p>Este exemplo mostra o uso da anotação <code>@SessionScoped</code> para objetos injetados. Um objeto que é definido +como <code>@SessionScoped</code> é criado para cada HTTPSession e é compartilhado por todos os beans que o injetam +através do mesmo HTTPSession.</p> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_execute_a_aplicação">Execute a aplicação:</h2> +<div class="sectionbody"> +<div class="literalblock"> +<div class="content"> +<pre>mvn clean install tomee:run</pre> +</div> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_exemplo">Exemplo</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>Este exemplo tem um endpoint em que um usuário fornece um <code>name</code> no parâmetro da requisição, que é +persistido como um field em um session scoped bean chamado <code>SessionBean</code> e então é recuperado por outro +endpoint.</p> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_requisição">Requisição</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>GET <a href="http://localhost:8080/cdi-session-scope/set-name?name=Puneeth" class="bare">http://localhost:8080/cdi-session-scope/set-name?name=Puneeth</a></p> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_resposta">Resposta</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p><code>done, go to /name servlet</code></p> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_requisição_2">Requisição</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>GET <a href="http://localhost:8080/cdi-session-scope/name" class="bare">http://localhost:8080/cdi-session-scope/name</a></p> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_resposta_2">Resposta</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>name = {Puneeth}</p> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_sessionbean">SessionBean</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>A anotação <code>@SessionScoped</code> especifica que este bean tem escopo de sessão, então haverá apenas uma +instância dessa classe associada a uma HTTPSession particular.</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="highlight"><code class="language-java" data-lang="java">@SessionScoped +public class SessionBean implements Serializable { + + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +}</code></pre> +</div> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_inputservlet">InputServlet</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p><code>InputServlet</code> é um servlet genérico que é mapeado pela url <code>/set-name</code>. O bean de escopo de sessão +<code>SessionBean</code> foi injetado neste servlet, e o parâmetro de entrada da requisição sera atribuÃdo ao field +<code>name</code> do bean.</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="highlight"><code class="language-java" data-lang="java">@WebServlet(name = "input-servlet", urlPatterns = {"/set-name"}) +public class InputServlet extends HttpServlet { + + @Inject + private SessionBean bean; + + @Override + protected void service(HttpServletRequest req, HttpServletResponse resp + throws ServletException, IOException { + final String name = req.getParameter("name"); + if (name == null || name.isEmpty()) { + resp.getWriter().write("please add a parameter name=xxx"); + } else { + bean.setName(name); + resp.getWriter().write("done, go to /name servlet"); + } + + } +}</code></pre> +</div> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_answerbean">AnswerBean</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>O bean <code>AnswerBean</code> tem escopo de requisição com um <code>SessionBean</code> injetado. Ele contem um método +<code>@PostConstruct</code> em que o valor do campo <code>name</code> do <code>SessionBean</code> é recuperado e atribuÃdo ao campo <code>value</code>.</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="highlight"><code class="language-java" data-lang="java">public class AnswerBean { + + @Inject + private SessionBean bean; + + private String value; + + @PostConstruct + public void init() { + value = '{' + bean.getName() + '}'; + } + + public String value() { + return value; + } +}</code></pre> +</div> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_outputservlet">OutputServlet</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p><code>OutputServlet</code> é outro servlet com o <code>AnswerBean</code> injetado. Quando <code>/name</code> é chamado o valor do <code>AnswerBean</code> +é lido e escrito na resposta.</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="highlight"><code class="language-java" data-lang="java">@WebServlet(name = "output-servlet", urlPatterns = {"/name"}) +public class OutputServlet extends HttpServlet { + + @Inject + private AnswerBean bean; + + @Override + protected void service(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + final String name = bean.value(); + if (name == null || name.isEmpty()) { + resp.getWriter().write("please go to servlet /set-name please"); + } else { + resp.getWriter().write("name = " + name); + } + } +}</code></pre> +</div> +</div> +</div> +</div> + </div> + + </div> + </div> +<footer> + <div class="container"> + <div class="row"> + <div class="col-sm-6 text-center-mobile"> + <h3 class="white">Be simple. Be certified. Be Tomcat.</h3> + <h5 class="light regular light-white">"A good application in a good server"</h5> + <ul class="social-footer"> + <li><a href="https://www.facebook.com/ApacheTomEE/"><i class="fa fa-facebook"></i></a></li> + <li><a href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li> + <li><a href="https://plus.google.com/communities/105208241852045684449"><i class="fa fa-google-plus"></i></a></li> + </ul> + </div> + <div class="col-sm-6 text-center-mobile"> + <div class="row opening-hours"> + <div class="col-sm-3 text-center-mobile"> + <h5><a href="../../../latest/docs/documentation.html" 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-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> + </div> + </div> + </div> + </footer> + <!-- Holder for mobile navigation --> + <div class="mobile-nav"> + <ul> + <li><a hef="../../../latest/docs/admin/index.html">Administrators</a> + <li><a hef="../../../latest/docs/developer/index.html">Developers</a> + <li><a hef="../../../latest/docs/advanced/index.html">Advanced</a> + <li><a hef="../../../community/index.html">Community</a> + </ul> + <a href="#" class="close-link"><i class="arrow_up"></i></a> + </div> + <!-- Scripts --> + <script src="../../../js/jquery-1.11.1.min.js"></script> + <script src="../../../js/owl.carousel.min.js"></script> + <script src="../../../js/bootstrap.min.js"></script> + <script src="../../../js/wow.min.js"></script> + <script src="../../../js/typewriter.js"></script> + <script src="../../../js/jquery.onepagenav.js"></script> + <script src="../../../js/tree.jquery.js"></script> + <script src="../../../js/highlight.pack.js"></script> + <script src="../../../js/main.js"></script> + </body> + +</html> +
Added: tomee/site/trunk/content/master/pt/examples/change-jaxws-url.html URL: http://svn.apache.org/viewvc/tomee/site/trunk/content/master/pt/examples/change-jaxws-url.html?rev=1866555&view=auto ============================================================================== --- tomee/site/trunk/content/master/pt/examples/change-jaxws-url.html (added) +++ tomee/site/trunk/content/master/pt/examples/change-jaxws-url.html Sat Sep 7 14:25:49 2019 @@ -0,0 +1,291 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Apache TomEE</title> + <meta name="description" + content="Apache TomEE is a lightweight, yet powerful, JavaEE Application server with feature rich tooling." /> + <meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" /> + <meta name="author" content="Luka Cvetinovic for Codrops" /> + <link rel="icon" href="../../../favicon.ico"> + <link rel="icon" type="image/png" href="../../../favicon.png"> + <meta name="msapplication-TileColor" content="#80287a"> + <meta name="theme-color" content="#80287a"> + <link rel="stylesheet" type="text/css" href="../../../css/normalize.css"> + <link rel="stylesheet" type="text/css" href="../../../css/bootstrap.css"> + <link rel="stylesheet" type="text/css" href="../../../css/owl.css"> + <link rel="stylesheet" type="text/css" href="../../../css/animate.css"> + <link rel="stylesheet" type="text/css" href="../../../fonts/font-awesome-4.1.0/css/font-awesome.min.css"> + <link rel="stylesheet" type="text/css" href="../../../fonts/eleganticons/et-icons.css"> + <link rel="stylesheet" type="text/css" href="../../../css/jqtree.css"> + <link rel="stylesheet" type="text/css" href="../../../css/idea.css"> + <link rel="stylesheet" type="text/css" href="../../../css/cardio.css"> + + <script type="text/javascript"> + + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-2717626-1']); + _gaq.push(['_setDomainName', 'apache.org']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + + </script> +</head> + +<body> + <div class="preloader"> + <img src="../../../img/loader.gif" alt="Preloader image"> + </div> + <nav class="navbar"> + <div class="container"> + <div class="row"> <div class="col-md-12"> + + <!-- Brand and toggle get grouped for better mobile display --> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand" href="/"> + <span> + + + <img src="../../../img/logo-active.png"> + + + </span> + Apache TomEE + </a> + </div> + <!-- Collect the nav links, forms, and other content for toggling --> + <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> + <ul class="nav navbar-nav navbar-right main-nav"> + <li><a href="../../../docs.html">Documentation</a></li> + <li><a href="../../../community/index.html">Community</a></li> + <li><a href="../../../security/security.html">Security</a></li> + <li><a href="../../../download-ng.html">Downloads</a></li> + </ul> + </div> + <!-- /.navbar-collapse --> + </div></div> + </div> + <!-- /.container-fluid --> + </nav> + + + <div id="main-block" class="container main-block"> + <div class="row title"> + <div class="col-md-12"> + <div class='page-header'> + + <h1>Alterar JAXWS URL</h1> + </div> + </div> + </div> + <div class="row"> + + <div class="col-md-12"> + <div class="paragraph"> +<p>Para alterar a URI de um web service, uma solução é usar o arquivo <code>openejb-jar.xml</code>.</p> +</div> +<div class="paragraph"> +<p>Neste exemplo temos um web service através da classe <code>Rot13</code>:</p> +</div> +<div class="literalblock"> +<div class="content"> +<pre>package org.superbiz.jaxws; + +import javax.ejb.Lock; +import javax.ejb.LockType; +import javax.ejb.Singleton; +import javax.jws.WebService; + +@Lock(LockType.READ) +@Singleton +@WebService +public class Rot13 { + public String rot13(final String in) { + final StringBuilder builder = new StringBuilder(in.length()); + for (int b : in.toCharArray()) { + int cap = b & 32; + b &= ~cap; + if (Character.isUpperCase(b)) { + b = (b - 'A' + 13) % 26 + 'A'; + } else { + b = cap; + } + b |= cap; + builder.append((char) b); + } + return builder.toString(); + } +}</pre> +</div> +</div> +<div class="paragraph"> +<p>Decidimos fazer o deploy na url <code>/tool/rot13</code>.</p> +</div> +<div class="paragraph"> +<p>Para fazer isso, primeiro temos que definir a rota no arquivo <code>openejb-jar.xml</code>:</p> +</div> +<div class="literalblock"> +<div class="content"> +<pre><?xml version="1.0" encoding="UTF-8"?> +<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1"> + <enterprise-beans> + <session> + <ejb-name>Rot13</ejb-name> + <web-service-address>/tool/rot13</web-service-address> + </session> + </enterprise-beans> +</openejb-jar></pre> +</div> +</div> +<div class="paragraph"> +<p>Isto não é o bastante, por que, por padrão o TomEE faz o deploy do web service +com um subcontexto chamado <code>webservices</code>. Para evitar isto simplesmente informe +a propriedade <code>tomee.jaxws.subcontext</code> para <code>/</code> (feito no arquivo <code>arquillian.xml</code> +para nosso teste).</p> +</div> +<div class="paragraph"> +<p>Agora fizemos o deploy do nosso web service <code>Rot13</code> como esperado no contexto +<code>/tool/rot13</code> e vamos verificar isto com o Arquillian e o TomEE embedded:</p> +</div> +<div class="literalblock"> +<div class="content"> +<pre> package org.superbiz.jaxws; + + import org.apache.ziplock.IO; + import org.jboss.arquillian.container.test.api.Deployment; + import org.jboss.arquillian.junit.Arquillian; + import org.jboss.arquillian.test.api.ArquillianResource; + import org.jboss.shrinkwrap.api.ArchivePaths; + import org.jboss.shrinkwrap.api.ShrinkWrap; + import org.jboss.shrinkwrap.api.asset.ClassLoaderAsset; + import org.jboss.shrinkwrap.api.spec.WebArchive; + import org.junit.AfterClass; + import org.junit.BeforeClass; + import org.junit.Test; + import org.junit.runner.RunWith; + + import java.net.URL; + + import static org.junit.Assert.assertThat; + import static org.junit.internal.matchers.StringContains.containsString; + + @RunWith(Arquillian.class) + public class Rot13Test { + @ArquillianResource + private URL url; + + @Deployment(testable = false) + public static WebArchive war() { + return ShrinkWrap.create(WebArchive.class) + .addClass(Rot13.class) + .addAsWebInfResource(new ClassLoaderAsset("META-INF/openejb-jar.xml"), ArchivePaths.create("openejb-jar.xml")); + } + + @Test + public void checkWSDLIsDeployedWhereItIsConfigured() throws Exception { + final String wsdl = IO.slurp(new URL(url.toExternalForm() + "tool/rot13?wsdl")); + assertThat(wsdl, containsString("Rot13")); + } + }</pre> +</div> +</div> + </div> + + </div> + </div> +<footer> + <div class="container"> + <div class="row"> + <div class="col-sm-6 text-center-mobile"> + <h3 class="white">Be simple. Be certified. Be Tomcat.</h3> + <h5 class="light regular light-white">"A good application in a good server"</h5> + <ul class="social-footer"> + <li><a href="https://www.facebook.com/ApacheTomEE/"><i class="fa fa-facebook"></i></a></li> + <li><a href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li> + <li><a href="https://plus.google.com/communities/105208241852045684449"><i class="fa fa-google-plus"></i></a></li> + </ul> + </div> + <div class="col-sm-6 text-center-mobile"> + <div class="row opening-hours"> + <div class="col-sm-3 text-center-mobile"> + <h5><a href="../../../latest/docs/documentation.html" 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-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> + </div> + </div> + </div> + </footer> + <!-- Holder for mobile navigation --> + <div class="mobile-nav"> + <ul> + <li><a hef="../../../latest/docs/admin/index.html">Administrators</a> + <li><a hef="../../../latest/docs/developer/index.html">Developers</a> + <li><a hef="../../../latest/docs/advanced/index.html">Advanced</a> + <li><a hef="../../../community/index.html">Community</a> + </ul> + <a href="#" class="close-link"><i class="arrow_up"></i></a> + </div> + <!-- Scripts --> + <script src="../../../js/jquery-1.11.1.min.js"></script> + <script src="../../../js/owl.carousel.min.js"></script> + <script src="../../../js/bootstrap.min.js"></script> + <script src="../../../js/wow.min.js"></script> + <script src="../../../js/typewriter.js"></script> + <script src="../../../js/jquery.onepagenav.js"></script> + <script src="../../../js/tree.jquery.js"></script> + <script src="../../../js/highlight.pack.js"></script> + <script src="../../../js/main.js"></script> + </body> + +</html> + Added: tomee/site/trunk/content/master/pt/examples/cloud-tomee-azure.html URL: http://svn.apache.org/viewvc/tomee/site/trunk/content/master/pt/examples/cloud-tomee-azure.html?rev=1866555&view=auto ============================================================================== --- tomee/site/trunk/content/master/pt/examples/cloud-tomee-azure.html (added) +++ tomee/site/trunk/content/master/pt/examples/cloud-tomee-azure.html Sat Sep 7 14:25:49 2019 @@ -0,0 +1,339 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Apache TomEE</title> + <meta name="description" + content="Apache TomEE is a lightweight, yet powerful, JavaEE Application server with feature rich tooling." /> + <meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" /> + <meta name="author" content="Luka Cvetinovic for Codrops" /> + <link rel="icon" href="../../../favicon.ico"> + <link rel="icon" type="image/png" href="../../../favicon.png"> + <meta name="msapplication-TileColor" content="#80287a"> + <meta name="theme-color" content="#80287a"> + <link rel="stylesheet" type="text/css" href="../../../css/normalize.css"> + <link rel="stylesheet" type="text/css" href="../../../css/bootstrap.css"> + <link rel="stylesheet" type="text/css" href="../../../css/owl.css"> + <link rel="stylesheet" type="text/css" href="../../../css/animate.css"> + <link rel="stylesheet" type="text/css" href="../../../fonts/font-awesome-4.1.0/css/font-awesome.min.css"> + <link rel="stylesheet" type="text/css" href="../../../fonts/eleganticons/et-icons.css"> + <link rel="stylesheet" type="text/css" href="../../../css/jqtree.css"> + <link rel="stylesheet" type="text/css" href="../../../css/idea.css"> + <link rel="stylesheet" type="text/css" href="../../../css/cardio.css"> + + <script type="text/javascript"> + + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-2717626-1']); + _gaq.push(['_setDomainName', 'apache.org']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + + </script> +</head> + +<body> + <div class="preloader"> + <img src="../../../img/loader.gif" alt="Preloader image"> + </div> + <nav class="navbar"> + <div class="container"> + <div class="row"> <div class="col-md-12"> + + <!-- Brand and toggle get grouped for better mobile display --> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand" href="/"> + <span> + + + <img src="../../../img/logo-active.png"> + + + </span> + Apache TomEE + </a> + </div> + <!-- Collect the nav links, forms, and other content for toggling --> + <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> + <ul class="nav navbar-nav navbar-right main-nav"> + <li><a href="../../../docs.html">Documentation</a></li> + <li><a href="../../../community/index.html">Community</a></li> + <li><a href="../../../security/security.html">Security</a></li> + <li><a href="../../../download-ng.html">Downloads</a></li> + </ul> + </div> + <!-- /.navbar-collapse --> + </div></div> + </div> + <!-- /.container-fluid --> + </nav> + + + <div id="main-block" class="container main-block"> + <div class="row title"> + <div class="col-md-12"> + <div class='page-header'> + + <h1>Implantação de TomEE no Azure</h1> + </div> + </div> + </div> + <div class="row"> + + <div class="col-md-12"> + <div id="preamble"> +<div class="sectionbody"> +<div class="paragraph"> +<p>Este exemplo usa um aplicativo de echo básico, implantado com o TomEE incorporado na nuvem do Azure.</p> +</div> +<div class="paragraph"> +<p>Usamos o plugin do maven do TomEE para empacotar o aplicativo com o TomEE Embedded +a fim de gerar um fat jar. Este jar é então escolhido e deployado pelo azure-webapp-maven-plugin.</p> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_configuração_do_azure">Configuração do Azure</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>Para que o plug-in do Azure funcione, você precisará ter uma conta do Azure e adicionar uma assinatura a ela.</p> +</div> +<div class="paragraph"> +<p>Então, em sua máquina de desenvolvimento, instale a interface da linha de comandos (CLI) do Azure e faça a autenticação com a linha de comando, +antes que você possa implantar seu aplicativo.</p> +</div> +<div class="ulist"> +<ul> +<li> +<p>Crie uma conta Azure, se você não tem uma, faça aqui <a href="https://azure.microsoft.com/en-us" class="bare">https://azure.microsoft.com/en-us</a></p> +</li> +<li> +<p>Use a opção free, se disponÃvel ou <a href="https://portal.azure.com/#blade/Microsoft_Azure_Billing/SubscriptionsBlade">adicione uma assinatura</a>.</p> +</li> +<li> +<p><a href="https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest">Instale</a> o Azure (CLI) de acordo com o sistema operacional do computador que você está usando para desenvolver.</p> +</li> +<li> +<p>Finalmente, você pode configurar seu computador de desenvolvimento.</p> +</li> +</ul> +</div> +<div class="sect2"> +<h3 id="_fazendo_login_no_azure">Fazendo login no Azure</h3> +<div class="paragraph"> +<p><code>az login</code></p> +</div> +<div class="paragraph"> +<p>O resultado:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre>[ + { + "cloudName": "AzureCloud", + "id": "aaaaaaaa-aaaa-aaaa-aaaaa-aaaaaaaaaa", + "isDefault": true, + "name": "Pay-As-You-Go", + "state": "Enabled", + "tenantId": "bbbbbbb-bbbbb-bbbb-bbbbb-bbbbbbbbbbb", + "user": { + "name": "<o email da sua conta azure>", + "type": "user" + } + } + ]</pre> +</div> +</div> +<div class="paragraph"> +<p>O TenantId é alguém que pode registrar e gerenciar aplicativos por conta própria. Você precisará disso para mais tarde.</p> +</div> +</div> +<div class="sect2"> +<h3 id="_criando_um_service_principal">Criando um service principal</h3> +<div class="paragraph"> +<p>Um Azure service principal é uma identidade de segurança usada por aplicativos, serviços e ferramentas de automação para acessar recursos especÃficos do Azure:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre>az ad sp create-for-rbac --name http://<seu-sub-domÃnio> --password <password para este aplicativo> + +{ + "appId": "cccccccc-cccc-cccc-cccc-ccccccccccccccc", + "displayName": "cloud-tomee-azure", + "name": "http://cloud-tomee-azure", + "password": "<password for this app>", + "tenant": "bbbbbbb-bbbbb-bbbb-bbbbb-bbbbbbbbbbb" +}</pre> +</div> +</div> +<div class="paragraph"> +<p>O <seu-sub-domÃnio>, também é chamado de service principal name (nome principal do serviço) na documentação do Azure. +Neste exemplo "http://cloud-tomee-azure" tem que ser exclusivo no Azure. +O appId é a identificação do serviço de aplicativo.</p> +</div> +</div> +<div class="sect2"> +<h3 id="_configurando_o_maven">Configurando o Maven</h3> +<div class="paragraph"> +<p>Você pode continuar usando apenas a CLI do Azure para autenticação, mas também podemos fazê-lo permanentemente com o Maven.</p> +</div> +<div class="paragraph"> +<p>Nesse caso, precisamos editar o arquivo settings.xml do Maven para que o plugin azure-webapp-maven possa autenticar no Azure:</p> +</div> +<div class="paragraph"> +<p>Você pode adicionar um novo servidor em <code>~ / .m2 / settings.xml</code> assim:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre><server> + <id>azure-auth</id> + <configuration> + <client>cccccccc-cccc-cccc-cccc-ccccccccccccccc</client> + <tenant>bbbbbbb-bbbbb-bbbb-bbbbb-bbbbbbbbbbb</tenant> + <key><password para este aplicativo></key> + <environment>AZURE</environment> + </configuration> +</server></pre> +</div> +</div> +<div class="paragraph"> +<p>à isso aÃ. Agora você pode criar o exemplo e implantá-lo no Azure usando o Maven:</p> +</div> +<div class="paragraph"> +<p><code>mvn clean install -Pazure-single-jar azure-webapp:deploy</code></p> +</div> +<div class="paragraph"> +<p>O azure-webapp é explicitamente chamado porque depende de sua conta do Azure. O build padrão do TomEE não usará uma conta do Azure.</p> +</div> +<div class="paragraph"> +<p>O URL final será semelhante a:</p> +</div> +<div class="paragraph"> +<p><code><a href="https://<your-sub-domain>.azurewebsites.net/cloud-tomee-azure-8.0.0-SNAPSHOT/echo/send-this-back" class="bare">https://<your-sub-domain>.azurewebsites.net/cloud-tomee-azure-8.0.0-SNAPSHOT/echo/send-this-back</a></code></p> +</div> +<div class="sect3"> +<h4 id="_notas">Notas</h4> +<div class="paragraph"> +<p>No momento da criação deste exemplo, há um erro no azure com o JAVA_HOME que impede a implementação. +Verificar: <a href="https://github.com/Azure-App-Service/java/issues/11" class="bare">https://github.com/Azure-App-Service/java/issues/11</a> +A solução é definir a variável de ambiente no console da Web do Azure e reiniciar o aplicativo.</p> +</div> +<div class="paragraph"> +<p>Para implantar o aplicativo de echo localmente, você pode executar:</p> +</div> +<div class="paragraph"> +<p><code>mvn tomee:run</code></p> +</div> +<div class="paragraph"> +<p>Você pode testar o aplicativo chamando <code><a href="http://localhost/cloud-tomee-azure-8.0.0-SNAPSHOT/echo/send-this-back" class="bare">http://localhost/cloud-tomee-azure-8.0.0-SNAPSHOT/echo/send-this-back</a></code></p> +</div> +<div class="paragraph"> +<p>Ele retornará send-this-back.</p> +</div> +<div class="paragraph"> +<p>O aplicativo echo também está disponÃvel com um arquivo war simples que você pode implantar no TomEE manualmente, para fins de teste.</p> +</div> +</div> +</div> +</div> +</div> + </div> + + </div> + </div> +<footer> + <div class="container"> + <div class="row"> + <div class="col-sm-6 text-center-mobile"> + <h3 class="white">Be simple. Be certified. Be Tomcat.</h3> + <h5 class="light regular light-white">"A good application in a good server"</h5> + <ul class="social-footer"> + <li><a href="https://www.facebook.com/ApacheTomEE/"><i class="fa fa-facebook"></i></a></li> + <li><a href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li> + <li><a href="https://plus.google.com/communities/105208241852045684449"><i class="fa fa-google-plus"></i></a></li> + </ul> + </div> + <div class="col-sm-6 text-center-mobile"> + <div class="row opening-hours"> + <div class="col-sm-3 text-center-mobile"> + <h5><a href="../../../latest/docs/documentation.html" 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-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> + </div> + </div> + </div> + </footer> + <!-- Holder for mobile navigation --> + <div class="mobile-nav"> + <ul> + <li><a hef="../../../latest/docs/admin/index.html">Administrators</a> + <li><a hef="../../../latest/docs/developer/index.html">Developers</a> + <li><a hef="../../../latest/docs/advanced/index.html">Advanced</a> + <li><a hef="../../../community/index.html">Community</a> + </ul> + <a href="#" class="close-link"><i class="arrow_up"></i></a> + </div> + <!-- Scripts --> + <script src="../../../js/jquery-1.11.1.min.js"></script> + <script src="../../../js/owl.carousel.min.js"></script> + <script src="../../../js/bootstrap.min.js"></script> + <script src="../../../js/wow.min.js"></script> + <script src="../../../js/typewriter.js"></script> + <script src="../../../js/jquery.onepagenav.js"></script> + <script src="../../../js/tree.jquery.js"></script> + <script src="../../../js/highlight.pack.js"></script> + <script src="../../../js/main.js"></script> + </body> + +</html> + Modified: tomee/site/trunk/content/master/pt/examples/index.html URL: http://svn.apache.org/viewvc/tomee/site/trunk/content/master/pt/examples/index.html?rev=1866555&r1=1866554&r2=1866555&view=diff ============================================================================== --- tomee/site/trunk/content/master/pt/examples/index.html (original) +++ tomee/site/trunk/content/master/pt/examples/index.html Sat Sep 7 14:25:49 2019 @@ -93,14 +93,32 @@ </div> <div class="row"> <div class="col-md-4"> - <div class="group-title">CDI</div> + <div class="group-title">Testing Techniques</div> <ul class="group"> - <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-alternative-and-stereotypes.html">Alternativas e Estereótipos do CDI</a></li> - <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-basic.html">CDI @Inject</a></li> - <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-events.html">CDI Events - Acoplamento Solto e Extensibilidade</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="applicationcomposer-jaxws-cdi.html">Application Composer com JAX-WS and CDI</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="application-composer.html">Compositor de Aplicações</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="alternate-descriptors.html">Descritores alternativos</a></li> + </ul> + </div> + <div class="col-md-4"> + <div class="group-title">Security</div> + <ul class="group"> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-realm.html">CDI Realm</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="testing-security.html">Testing Security</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="simple-remote-tomcatusers.html">Usuários remotos do Tomcat simples</a></li> </ul> </div> <div class="col-md-4"> + <div class="group-title">Unrevised</div> + <ul class="group"> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="change-jaxws-url.html">Alterar JAXWS URL</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="deltaspike-i18n.html">Apache DeltaSpike I18n Demo</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="arquillian-jpa.html">Arquillian Persistence Extension</a></li> + </ul> + </div> + </div> + <div class="row"> + <div class="col-md-4"> <div class="group-title">JPA</div> <ul class="group"> <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="jpa-enumerated.html">JPA and Enums via @Enumerated</a></li> @@ -109,6 +127,14 @@ </ul> </div> <div class="col-md-4"> + <div class="group-title">EJB</div> + <ul class="group"> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="async-postconstruct.html">@Asynchronous @PostConstruct</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="access-timeout.html">Anotação @AccessTimeout</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="async-methods.html">Métodos AssÃncronos</a></li> + </ul> + </div> + <div class="col-md-4"> <div class="group-title">MicroProfile</div> <ul class="group"> <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="mp-config-example.html">MicroProfile Config</a></li> @@ -118,17 +144,16 @@ </div> <div class="row"> <div class="col-md-4"> - <div class="group-title">Testing Techniques</div> + <div class="group-title">Misc</div> <ul class="group"> - <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="application-composer.html">Compositor de Aplicações</a></li> - <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="alternate-descriptors.html">Descritores alternativos</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="jsf-cdi-and-ejb.html">JSF-CDI-EJB</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="mvc-cxf-hibernate.html">MVC-CXF-Hibernate</a></li> </ul> </div> <div class="col-md-4"> - <div class="group-title">Security</div> + <div class="group-title">Transactions</div> <ul class="group"> - <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="testing-security.html">Testing Security</a></li> - <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="simple-remote-tomcatusers.html">Usuários remotos do Tomcat simples</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="applicationexception.html">Anotação @ApplicationException</a></li> </ul> </div> <div class="col-md-4"> @@ -140,34 +165,51 @@ </div> <div class="row"> <div class="col-md-4"> - <div class="group-title">Unknown</div> + <div class="group-title">Other Features</div> <ul class="group"> - <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="index.html">index</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="bean-validation-design-by-contract.html">Design Bean Validation por Contrato</a></li> </ul> </div> <div class="col-md-4"> - <div class="group-title">Misc</div> + <div class="group-title">Cloud</div> <ul class="group"> - <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="mvc-cxf-hibernate.html">MVC-CXF-Hibernate</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cloud-tomee-azure.html">Implantação de TomEE no Azure</a></li> </ul> </div> <div class="col-md-4"> - <div class="group-title">Unrevised</div> + <div class="group-title">Meta-Annotations</div> <ul class="group"> - <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="deltaspike-i18n.html">Apache DeltaSpike I18n Demo</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="access-timeout-meta.html">@AccessTimeout a forma Meta-anotação</a></li> </ul> </div> </div> <div class="row"> + <div class="col-md-12"> + <div class="group-title large">CDI</div> + </div> + </div> + <div class="row"> <div class="col-md-4"> - <div class="group-title">Meta-Annotations</div> <ul class="group"> - <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="access-timeout-meta.html">@AccessTimeout a forma Meta-anotação</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-alternative-and-stereotypes.html">Alternativas e Estereótipos do CDI</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-application-scope.html">CDI @ApplicationScoped</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-basic.html">CDI @Inject</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-qualifier.html">CDI @Qualifier</a></li> </ul> </div> <div class="col-md-4"> + <ul class="group"> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-request-scope.html">CDI @RequestScoped</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-session-scope.html">CDI @SessionScoped</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-events.html">CDI Events - Acoplamento Solto e Extensibilidade</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-produces-field.html">CDI Field Producer</a></li> + </ul> </div> <div class="col-md-4"> + <ul class="group"> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-interceptors.html">CDI Interceptors</a></li> + <li class="group-item"><span class="group-item-i" ><i class="fa fa-angle-right"></i></span><a href="cdi-produces-disposes.html">CDI Produces Disposes</a></li> + </ul> </div> </div> Added: tomee/site/trunk/content/master/pt/examples/jsf-cdi-and-ejb.html URL: http://svn.apache.org/viewvc/tomee/site/trunk/content/master/pt/examples/jsf-cdi-and-ejb.html?rev=1866555&view=auto ============================================================================== --- tomee/site/trunk/content/master/pt/examples/jsf-cdi-and-ejb.html (added) +++ tomee/site/trunk/content/master/pt/examples/jsf-cdi-and-ejb.html Sat Sep 7 14:25:49 2019 @@ -0,0 +1,396 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Apache TomEE</title> + <meta name="description" + content="Apache TomEE is a lightweight, yet powerful, JavaEE Application server with feature rich tooling." /> + <meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" /> + <meta name="author" content="Luka Cvetinovic for Codrops" /> + <link rel="icon" href="../../../favicon.ico"> + <link rel="icon" type="image/png" href="../../../favicon.png"> + <meta name="msapplication-TileColor" content="#80287a"> + <meta name="theme-color" content="#80287a"> + <link rel="stylesheet" type="text/css" href="../../../css/normalize.css"> + <link rel="stylesheet" type="text/css" href="../../../css/bootstrap.css"> + <link rel="stylesheet" type="text/css" href="../../../css/owl.css"> + <link rel="stylesheet" type="text/css" href="../../../css/animate.css"> + <link rel="stylesheet" type="text/css" href="../../../fonts/font-awesome-4.1.0/css/font-awesome.min.css"> + <link rel="stylesheet" type="text/css" href="../../../fonts/eleganticons/et-icons.css"> + <link rel="stylesheet" type="text/css" href="../../../css/jqtree.css"> + <link rel="stylesheet" type="text/css" href="../../../css/idea.css"> + <link rel="stylesheet" type="text/css" href="../../../css/cardio.css"> + + <script type="text/javascript"> + + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-2717626-1']); + _gaq.push(['_setDomainName', 'apache.org']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + + </script> +</head> + +<body> + <div class="preloader"> + <img src="../../../img/loader.gif" alt="Preloader image"> + </div> + <nav class="navbar"> + <div class="container"> + <div class="row"> <div class="col-md-12"> + + <!-- Brand and toggle get grouped for better mobile display --> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a class="navbar-brand" href="/"> + <span> + + + <img src="../../../img/logo-active.png"> + + + </span> + Apache TomEE + </a> + </div> + <!-- Collect the nav links, forms, and other content for toggling --> + <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> + <ul class="nav navbar-nav navbar-right main-nav"> + <li><a href="../../../docs.html">Documentation</a></li> + <li><a href="../../../community/index.html">Community</a></li> + <li><a href="../../../security/security.html">Security</a></li> + <li><a href="../../../download-ng.html">Downloads</a></li> + </ul> + </div> + <!-- /.navbar-collapse --> + </div></div> + </div> + <!-- /.container-fluid --> + </nav> + + + <div id="main-block" class="container main-block"> + <div class="row title"> + <div class="col-md-12"> + <div class='page-header'> + + <h1>JSF-CDI-EJB</h1> + </div> + </div> + </div> + <div class="row"> + + <div class="col-md-12"> + <div id="preamble"> +<div class="sectionbody"> +<div class="paragraph"> +<p>Aplicação simples que contém um CDI managed bean <code>CalculatorBean</code>, +que usa o EJB <code>Calculator</code> para adicionar dois números e mostrar os resultados para o usuário. O EJB é injetado no managed bean usando a anotação +@Inject.</p> +</div> +<div class="paragraph"> +<p>Você poderia executar isso no último Apache TomEE +<a href="https://repository.apache.org/content/repositories/snapshots/org/apache/openejb/apache-tomee/">snapshot</a></p> +</div> +<div class="paragraph"> +<p>O código completo está abaixo, mas vamos quebrá-lo para olhar para alguns trechos menores e ver como ele funciona.</p> +</div> +<div class="paragraph"> +<p>Uma pequena nota sobre a configuração:</p> +</div> +<div class="paragraph"> +<p>Quanto as bibliotecas, myfaces-api e myfaces-impl são fornecidas em +tomee/lib e, portanto não devem ser parte do war. Nos termos do Maven, eles estariam com o escopo `provided'</p> +</div> +<div class="paragraph"> +<p>Observe também que nós usamos a declaração servlet 2.5 no web.xml</p> +</div> +<div class="paragraph"> +<p>E nós usamos a versão 2.0 do faces-config</p> +</div> +<div class="paragraph"> +<p>Para tornar este em um cdi-aware-archive (ou seja, arquivo Bean) um beans.xml vazio +é adicionado no WEB-INF</p> +</div> +<div class="literalblock"> +<div class="content"> +<pre> <?xml version="1.0" encoding="UTF-8"?> + + <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee + http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> + </beans></pre> +</div> +</div> +<div class="paragraph"> +<p>Nós primeiro vamos declarar o FacesServlet no web.xml</p> +</div> +<div class="literalblock"> +<div class="content"> +<pre> <servlet> + <servlet-name>Faces Servlet</servlet-name> + <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> + <load-on-startup>1</load-on-startup> + </servlet></pre> +</div> +</div> +<div class="paragraph"> +<p>FacesServlet atua como o controlador mestre.</p> +</div> +<div class="paragraph"> +<p>Em seguida criaremos o arquivo calculator.xhtml.</p> +</div> +<div class="literalblock"> +<div class="content"> +<pre> <h:outputText value='Enter first number'/> + <h:inputText value='#{calculatorBean.x}'/> + <h:outputText value='Enter second number'/> + <h:inputText value='#{calculatorBean.y}'/> + <h:commandButton action="#{calculatorBean.add}" value="Add"/></pre> +</div> +</div> +<div class="paragraph"> +<p>Observe como usamos o bean aqui. Por padrão, o nome do bean seria o nome simples da classe bean com a primeira letra minúscula</p> +</div> +<div class="paragraph"> +<p>Nós temos o <code>CalculatorBean</code> anotado com <code>@RequestScoped</code>. Então quando uma requisição vem, o bean é instanciado e colocado no escopo da requisição.</p> +</div> +<div class="paragraph"> +<p>Aqui, o método getX() do calculatorBean é invocado e valor do resultado é apresentado. x sendo um Double, nós devemos ver justamente 0.0 sendo exibido.</p> +</div> +<div class="paragraph"> +<p>Quando você modifica o valor e submete o formulário, esses valores inseridos são vinculados no bean usando os setters e então o método commandButton-action é invocado.</p> +</div> +<div class="paragraph"> +<p>Neste caso, CalculatorBean#add() é invocado.</p> +</div> +<div class="paragraph"> +<p>Calculator#add() delega o trabalho para o ejb, obtém o resultado, armazena-o e, em seguida, retorna qual view deve ser processada.</p> +</div> +<div class="paragraph"> +<p>O valor de retorno <code>success</code> é verificado no faces-config +navigation-rules e a respectiva página é renderizada.</p> +</div> +<div class="paragraph"> +<p>No nosso caso, a página <code>result.xhtml</code> é renderizada onde usar EL e mostra o resultado do request-scoped <code>calculatorBean</code>.</p> +</div> +</div> +</div> +<h1 id="_código_fonte" class="sect0">Código-fonte</h1> +<div class="sect1"> +<h2 id="_calculatorbean">CalculatorBean</h2> +<div class="sectionbody"> +<div class="literalblock"> +<div class="content"> +<pre>import javax.enterprise.context.RequestScoped; +import javax.inject.Named; +import javax.inject.Inject; + +@RequestScoped +@Named +public class CalculatorBean { + @Inject + Calculator calculator; + private double x; + private double y; + private double result; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + public double getResult() { + return result; + } + + public void setResult(double result) { + this.result = result; + } + + public String add() { + result = calculator.add(x, y); + return "success"; + } +}</pre> +</div> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_calculator">Calculator</h2> +<div class="sectionbody"> +<div class="literalblock"> +<div class="content"> +<pre>package org.superbiz.jsf; + +import javax.ejb.Stateless; + +@Stateless +public class Calculator{ + + public double add(double x, double y) { + return x + y; + } +}</pre> +</div> +</div> +<div class="paragraph"> +<p>#web.xml</p> +</div> +<div class="paragraph"> +<p>MyProject web.xml</p> +</div> +<div class="paragraph"> +<p>Faces Servlet javax.faces.webapp.FacesServlet 1</p> +</div> +<div class="paragraph"> +<p>Faces Servlet *.jsf</p> +</div> +<div class="paragraph"> +<p>index.jsp index.html</p> +</div> +<div class="paragraph"> +<p>#Calculator.xhtml</p> +</div> +<div class="paragraph"> +<p><!DOCTYPE html PUBLIC <code>-//W3C//DTD XHTML 1.0 Transitional//EN'' +</code><a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd''>" class="bare">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd''></a>;</p> +</div> +<div class="paragraph"> +<p>#Result.xhtml</p> +</div> +<div class="paragraph"> +<p><!DOCTYPE html PUBLIC <code>-//W3C//DTD XHTML 1.0 Transitional//EN'' +</code><a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd''>" class="bare">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd''></a>;</p> +</div> +<div class="literalblock"> +<div class="content"> +<pre> <h:commandLink action="back"> + <h:outputText value="Home"/> + </h:commandLink> +</h:form></pre> +</div> +</div> +<div class="paragraph"> +<p>#faces-config.xml</p> +</div> +<div class="paragraph"> +<p>/calculator.xhtml success /result.xhtml</p> +</div> +<div class="paragraph"> +<p>/result.xhtml back /calculator.xhtml</p> +</div> +</div> +</div> + </div> + + </div> + </div> +<footer> + <div class="container"> + <div class="row"> + <div class="col-sm-6 text-center-mobile"> + <h3 class="white">Be simple. Be certified. Be Tomcat.</h3> + <h5 class="light regular light-white">"A good application in a good server"</h5> + <ul class="social-footer"> + <li><a href="https://www.facebook.com/ApacheTomEE/"><i class="fa fa-facebook"></i></a></li> + <li><a href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li> + <li><a href="https://plus.google.com/communities/105208241852045684449"><i class="fa fa-google-plus"></i></a></li> + </ul> + </div> + <div class="col-sm-6 text-center-mobile"> + <div class="row opening-hours"> + <div class="col-sm-3 text-center-mobile"> + <h5><a href="../../../latest/docs/documentation.html" 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-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> + </div> + </div> + </div> + </footer> + <!-- Holder for mobile navigation --> + <div class="mobile-nav"> + <ul> + <li><a hef="../../../latest/docs/admin/index.html">Administrators</a> + <li><a hef="../../../latest/docs/developer/index.html">Developers</a> + <li><a hef="../../../latest/docs/advanced/index.html">Advanced</a> + <li><a hef="../../../community/index.html">Community</a> + </ul> + <a href="#" class="close-link"><i class="arrow_up"></i></a> + </div> + <!-- Scripts --> + <script src="../../../js/jquery-1.11.1.min.js"></script> + <script src="../../../js/owl.carousel.min.js"></script> + <script src="../../../js/bootstrap.min.js"></script> + <script src="../../../js/wow.min.js"></script> + <script src="../../../js/typewriter.js"></script> + <script src="../../../js/jquery.onepagenav.js"></script> + <script src="../../../js/tree.jquery.js"></script> + <script src="../../../js/highlight.pack.js"></script> + <script src="../../../js/main.js"></script> + </body> + +</html> +
