| <!DOCTYPE html> |
| <html lang="en"> |
| |
| <head> |
| <meta charset="UTF-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <title>Apache TomEE</title> |
| <meta name="description" |
| content="Apache TomEE is a lightweight, yet powerful, JavaEE Application server with feature rich tooling." /> |
| <meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" /> |
| <meta name="author" content="Luka Cvetinovic for Codrops" /> |
| <link rel="icon" href="../../../favicon.ico"> |
| <link rel="icon" type="image/png" href="../../../favicon.png"> |
| <meta name="msapplication-TileColor" content="#80287a"> |
| <meta name="theme-color" content="#80287a"> |
| <link rel="stylesheet" type="text/css" href="../../../css/normalize.css"> |
| <link rel="stylesheet" type="text/css" href="../../../css/bootstrap.css"> |
| <link rel="stylesheet" type="text/css" href="../../../css/owl.css"> |
| <link rel="stylesheet" type="text/css" href="../../../css/animate.css"> |
| <link rel="stylesheet" type="text/css" href="../../../fonts/font-awesome-4.1.0/css/font-awesome.min.css"> |
| <link rel="stylesheet" type="text/css" href="../../../fonts/eleganticons/et-icons.css"> |
| <link rel="stylesheet" type="text/css" href="../../../css/jqtree.css"> |
| <link rel="stylesheet" type="text/css" href="../../../css/idea.css"> |
| <link rel="stylesheet" type="text/css" href="../../../css/cardio.css"> |
| |
| <script type="text/javascript"> |
| <!-- Matomo --> |
| var _paq = window._paq = window._paq || []; |
| /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ |
| /* We explicitly disable cookie tracking to avoid privacy issues */ |
| _paq.push(['disableCookies']); |
| _paq.push(['trackPageView']); |
| _paq.push(['enableLinkTracking']); |
| (function () { |
| var u = "//matomo.privacy.apache.org/"; |
| _paq.push(['setTrackerUrl', u + 'matomo.php']); |
| _paq.push(['setSiteId', '5']); |
| var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; |
| g.async = true; |
| g.src = u + 'matomo.js'; |
| s.parentNode.insertBefore(g, s); |
| })(); |
| <!-- End Matomo Code --> |
| </script> |
| </head> |
| |
| <body> |
| <div class="preloader"> |
| <img src="../../../img/loader.gif" alt="Preloader image"> |
| </div> |
| <nav class="navbar"> |
| <div class="container"> |
| <div class="row"> <div class="col-md-12"> |
| |
| <!-- Brand and toggle get grouped for better mobile display --> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| <a class="navbar-brand" href="/" title="Apache TomEE"> |
| <span> |
| |
| |
| <img |
| src="../../../img/apache_tomee-logo.svg" |
| onerror="this.src='../../../img/apache_tomee-logo.jpg'" |
| height="50" |
| > |
| |
| |
| </span> |
| </a> |
| </div> |
| <!-- Collect the nav links, forms, and other content for toggling --> |
| <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> |
| <ul class="nav navbar-nav navbar-right main-nav"> |
| <li><a href="../../../docs.html">Documentation</a></li> |
| <li><a href="../../../community/index.html">Community</a></li> |
| <li><a href="../../../security/security.html">Security</a></li> |
| <li><a class="btn btn-accent accent-orange no-shadow" href="../../../download.html">Downloads</a></li> |
| </ul> |
| </div> |
| <!-- /.navbar-collapse --> |
| </div></div> |
| </div> |
| <!-- /.container-fluid --> |
| </nav> |
| |
| |
| <div id="main-block" class="container main-block"> |
| <div class="row title"> |
| <div class="col-md-12"> |
| <div class='page-header'> |
| |
| <h1>Simple JMS</h1> |
| </div> |
| </div> |
| </div> |
| <div class="row"> |
| |
| <div class="col-md-12"> |
| <div id="preamble"> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Este ejemplo demuestra cómo configurar un servicio JMS personalizado <code>CustomJmsService</code> |
| para producir y consumir un Mensaje JMS <code>Message</code>.</p> |
| </div> |
| </div> |
| </div> |
| <h1 id="_código" class="sect0">Código</h1> |
| <div class="sect1"> |
| <h2 id="_el_servicio_jms_message_queue_messageproducer_messageconsumer">El servicio JMS: <code>Message</code>, <code>Queue</code>, MessageProducer<code>, </code>MessageConsumer``</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Aquí tenemos un punto final REST, una clase con la anotación: <code>@Path("/ message")</code> que indica la ruta correspondiente a la clase <code>CustomJmsService</code>. Por lo tanto, definimos <code>sendMessage()</code> como <code>@POST</code> y <code>acceptMessage()</code> como <code>@GET</code> para la ruta <code>/message</code>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Además, directamente relacionado con este ejemplo, se pueden observar 2 elementos: una cola: <code>Queue</code> y una fabrica de conexiones: <code>ConnectionFactory</code> anotadas como <code>@Resource</code></p> |
| </div> |
| <div class="paragraph"> |
| <p>Finalmente, interactuando con instancias de <code>Connection</code>, <code>Session</code>, y <code>Queue</code> se pueden ver instancias de <code>MessageProducer</code> y <code>MessageConsumer</code>, responsables de escribir y leer hacia la / desde la cola: <code>Queue</code> respectivamente.</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-java" data-lang="java">@Stateless |
| @Path("message") |
| public class CustomJmsService { |
| |
| @Resource(name = "messageQueue") |
| private Queue messageQueue; |
| |
| @Resource |
| private ConnectionFactory connectionFactory; |
| |
| @POST |
| public void sendMessage(final String message) { |
| sendMessage(messageQueue, message); |
| } |
| |
| @GET |
| public String receiveMessage() throws JMSException { |
| final TextMessage textMessage = receiveMessage(messageQueue, 1000); |
| if (textMessage == null) { |
| return null; |
| } |
| |
| return textMessage.getText(); |
| } |
| |
| private void sendMessage(final Queue queue, final String message) { |
| try (final Connection connection = connectionFactory.createConnection(); |
| final Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE); |
| final MessageProducer producer = session.createProducer(queue)) { |
| |
| connection.start(); |
| |
| final Message jmsMessage = session.createTextMessage(message); |
| |
| // This enqueues messages successfully with both 8.0.0-M3 and 8.0.0 |
| producer.send(jmsMessage); |
| } catch (final Exception e) { |
| throw new RuntimeException("Caught exception from JMS when sending a message", e); |
| } |
| } |
| |
| private TextMessage receiveMessage(final Queue queue, final long receiveTimeoutMillis) { |
| try (final Connection connection = connectionFactory.createConnection(); |
| final Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE); |
| final MessageConsumer messageConsumer = session.createConsumer(queue)) { |
| |
| connection.start(); |
| |
| final Message jmsMessage = messageConsumer.receive(receiveTimeoutMillis); |
| |
| if (jmsMessage == null) { |
| return null; |
| } |
| |
| return (TextMessage) jmsMessage; |
| } catch (final Exception e) { |
| throw new RuntimeException("Caught exception from JMS when receiving a message", e); |
| } |
| } |
| }</code></pre> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="_probando">Probando</h2> |
| <div class="sectionbody"> |
| <div class="sect2"> |
| <h3 id="_test_para_el_servicio_jms">Test para el servicio JMS</h3> |
| <div class="paragraph"> |
| <p>La prueba es trivial. La idea consiste en hacer primero una petición POST que contiene el mensaje para el servicio. Esto se realiza usando instancias de las clases <code>ClientBuilder</code> y <code>WebTarget</code>.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Luego, de manera similar a la petición POST, se lleva a cabo una petición GET que consume el mensaje anterior.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Finalmente, se verifican los HTTP status de las respuestas de manera que sean equivalentes a los códigos HTTP esperados (204/200), así como también que el contenido del mensaje recibido sea igual al mensaje enviado.</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-java" data-lang="java">@RunWith(Arquillian.class) |
| @RunAsClient |
| public class CustomJmsServiceTest { |
| |
| @Deployment |
| public static Archive<?> deployment() { |
| return Mvn.war(); |
| } |
| |
| @ArquillianResource |
| private URL baseUrl; |
| |
| @Test |
| public void test() throws Exception { |
| // POST |
| { |
| final WebTarget webTarget = ClientBuilder.newClient().target(baseUrl.toURI()); |
| final Response response = webTarget.path("message").request().post(Entity.text("This is a test")); |
| |
| assertEquals(204, response.getStatus()); |
| } |
| |
| // GET |
| { |
| final WebTarget webTarget = ClientBuilder.newClient().target(baseUrl.toURI()); |
| final Response response = webTarget.path("message").request().get(); |
| assertEquals(200, response.getStatus()); |
| |
| final String content = response.readEntity(String.class); |
| assertEquals("This is a test", content); |
| } |
| } |
| }</code></pre> |
| </div> |
| </div> |
| </div> |
| <div class="sect2"> |
| <h3 id="_ejecutando_el_test_del_servicio_jms">Ejecutando el test del servicio JMS</h3> |
| <div class="paragraph"> |
| <p>Construir y probar el ejemplo es simple. En el directorio <code>simple-jms</code> hay que ejecutar:</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>Esto creara una salida similar a lo siguiente:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-java" data-lang="java">INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication Using writers: |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@7a6a8b01 |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.cxf.jaxrs.nio.NioMessageBodyWriter@58be749c |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.cxf.jaxrs.provider.StringTextProvider@2740b6d6 |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.cxf.jaxrs.provider.JAXBElementTypedProvider@e08fc09 |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.cxf.jaxrs.provider.PrimitiveTextProvider@139e9988 |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.cxf.jaxrs.provider.FormEncodingProvider@3cee7c7e |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.cxf.jaxrs.provider.MultipartProvider@2513f485 |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.cxf.jaxrs.provider.SourceProvider@778a8c93 |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.cxf.jaxrs.provider.JAXBElementProvider@414a7c3a |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonbProvider@1b4e4173 |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.openejb.server.cxf.rs.johnzon.TomEEJsonpProvider@3f1bfc2e |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.cxf.jaxrs.provider.BinaryDataProvider@7dc57a14 |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.cxf.jaxrs.provider.DataSourceProvider@1af0fefd |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication Using exception mappers: |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper@8e6f08b |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.openejb.server.cxf.rs.EJBExceptionMapper@2fcd3c |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.deployApplication org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@1979c922 |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints REST Application: http://localhost:6586/test/ -> org.apache.openejb.server.rest.InternalApplication@2653d780 |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints Service URI: http://localhost:6586/test/message -> EJB org.superbiz.jms.CustomJmsService |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:6586/test/message -> String receiveMessage() throws JMSException |
| INFO [http-nio-6586-exec-2] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints POST http://localhost:6586/test/message -> void sendMessage(String) |
| INFO [http-nio-6586-exec-5] org.apache.activemq.broker.TransportConnector.start Connector vm://localhost started |
| org.apache.openejb.client.EventLogger log |
| INFO: RemoteInitialContextCreated{providerUri=http://localhost:6586/tomee/ejb} |
| INFO [http-nio-6586-exec-8] org.apache.openejb.assembler.classic.Assembler.destroyApplication Undeploying app: /tomee/examples/simple-jms/target/arquillian-test-working-dir/0/test |
| WARNING [http-nio-6586-exec-8] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [test] appears to have started a thread named [PoolIdleReleaseTimer] |
| WARNING [http-nio-6586-exec-8] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [test] appears to have started a thread named [ActiveMQ VMTransport: vm://localhost#0-1] |
| WARNING [http-nio-6586-exec-8] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [test] appears to have started a thread named [ActiveMQ VMTransport: vm://localhost#0-2] |
| org.apache.openejb.arquillian.common.TomEEContainer undeploy |
| INFO: cleaning /tomee/examples/simple-jms/target/arquillian-test-working-dir/0/test.war |
| org.apache.openejb.arquillian.common.TomEEContainer undeploy |
| INFO: cleaning /tomee/examples/simple-jms/target/arquillian-test-working-dir/0/test |
| Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 27.962 sec |
| INFO [main] sun.reflect.DelegatingMethodAccessorImpl.invoke A valid shutdown command was received via the shutdown port. Stopping the Server instance. |
| INFO [main] sun.reflect.DelegatingMethodAccessorImpl.invoke Pausing ProtocolHandler ["http-nio-6586"] |
| INFO [main] sun.reflect.DelegatingMethodAccessorImpl.invoke Pausing ProtocolHandler ["ajp-nio-8009"] |
| INFO [main] sun.reflect.DelegatingMethodAccessorImpl.invoke Stopping service [Catalina] |
| INFO [main] sun.reflect.DelegatingMethodAccessorImpl.invoke Stopping ProtocolHandler ["http-nio-6586"] |
| INFO [main] sun.reflect.DelegatingMethodAccessorImpl.invoke Stopping ProtocolHandler ["ajp-nio-8009"] |
| INFO [main] org.apache.openejb.server.SimpleServiceManager.stop Stopping server services |
| INFO [main] org.apache.openejb.assembler.classic.Assembler.destroyApplication Undeploying app: openejb |
| SEVERE [main] org.apache.openejb.core.singleton.SingletonInstanceManager.undeploy Unable to unregister MBean openejb.management:J2EEServer=openejb,J2EEApplication=<empty>,EJBModule=openejb,SingletonSessionBean=openejb/Deployer,name=openejb/Deployer,j2eeType=Invocations |
| SEVERE [main] org.apache.openejb.core.singleton.SingletonInstanceManager.undeploy Unable to unregister MBean openejb.management:J2EEServer=openejb,J2EEApplication=<empty>,EJBModule=openejb,SingletonSessionBean=openejb/Deployer,name=openejb/Deployer,j2eeType=Invocations |
| INFO [main] org.apache.openejb.assembler.classic.Assembler.doResourceDestruction Closing DataSource: Default Unmanaged JDBC Database |
| INFO [main] org.apache.openejb.assembler.classic.Assembler.doResourceDestruction Stopping ResourceAdapter: Default JMS Resource Adapter |
| INFO [main] org.apache.openejb.resource.activemq.ActiveMQResourceAdapter.stop Stopping ActiveMQ |
| INFO [108] org.apache.openejb.resource.activemq.ActiveMQResourceAdapter.stopImpl Stopped ActiveMQ broker |
| INFO [main] sun.reflect.DelegatingMethodAccessorImpl.invoke Destroying ProtocolHandler ["http-nio-6586"] |
| INFO [main] sun.reflect.DelegatingMethodAccessorImpl.invoke Destroying ProtocolHandler ["ajp-nio-8009"] |
| |
| Results : |
| |
| Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 |
| |
| [INFO] |
| [INFO] --- maven-war-plugin:2.4:war (default-war) @ simple-jms --- |
| [INFO] Packaging webapp |
| [INFO] Assembling webapp [simple-jms] in [/tomee/examples/simple-jms/target/simple-jms-8.0.1-SNAPSHOT] |
| [INFO] Processing war project |
| [INFO] Webapp assembled in [2118 msecs] |
| [INFO] Building war: /tomee/examples/simple-jms/target/simple-jms-8.0.1-SNAPSHOT.war |
| [INFO] |
| [INFO] --- maven-install-plugin:2.4:install (default-install) @ simple-jms --- |
| [INFO] Installing /tomee/examples/simple-jms/target/simple-jms-8.0.1-SNAPSHOT.war to /.m2/repository/org/superbiz/simple-jms/8.0.1-SNAPSHOT/simple-jms-8.0.1-SNAPSHOT.war |
| [INFO] Installing /tomee/examples/simple-jms/pom.xml to /.m2/repository/org/superbiz/simple-jms/8.0.1-SNAPSHOT/simple-jms-8.0.1-SNAPSHOT.pom |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] BUILD SUCCESS |
| [INFO] ------------------------------------------------------------------------ |
| [INFO] Total time: 50.089 s</code></pre> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| <h1 id="_running_the_app" class="sect0">Running the app</h1> |
| <div class="paragraph"> |
| <p>Ejecutar el ejemplo es simple. En el directorio <code>simple-jms</code> ingrese:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-java" data-lang="java">$ mvn tomee:run</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Esto creara una salida similiar a lo siguiente.</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-java" data-lang="java">[main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints REST Application: http://localhost:8080/simple-jms-8.0.1-SNAPSHOT/ -> org.apache.openejb.server.rest.InternalApplication@3b8b5b40 |
| [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints Service URI: http://localhost:8080/simple-jms-8.0.1-SNAPSHOT/message -> EJB org.superbiz.jms.CustomJmsService |
| [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints GET http://localhost:8080/simple-jms-8.0.1-SNAPSHOT/message -> String receiveMessage() throws JMSException |
| [main] org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logEndpoints POST http://localhost:8080/simple-jms-8.0.1-SNAPSHOT/message -> void sendMessage(String) |
| [main] sun.reflect.DelegatingMethodAccessorImpl.invoke Deployment of web application archive [\tomee\examples\simple-jms\target\apache-tomee\webapps\simple-jms-8.0.1-SNAPSHOT.war] has finished in [8,264] ms |
| [main] org.apache.catalina.core.StandardContext.setClassLoaderProperty Unable to set the web application class loader property [clearReferencesRmiTargets] to [true] as the property does not exist. |
| [main] org.apache.catalina.core.StandardContext.setClassLoaderProperty Unable to set the web application class loader property [clearReferencesObjectStreamClassCaches] to [true] as the property does not exist. |
| [main] org.apache.catalina.core.StandardContext.setClassLoaderProperty Unable to set the web application class loader property [clearReferencesObjectStreamClassCaches] to [true] as the property does not exist. |
| [main] org.apache.catalina.core.StandardContext.setClassLoaderProperty Unable to set the web application class loader property [clearReferencesThreadLocals] to [true] as the property does not exist. |
| [main] sun.reflect.DelegatingMethodAccessorImpl.invoke Starting ProtocolHandler ["http-nio-8080"] |
| [main] sun.reflect.DelegatingMethodAccessorImpl.invoke Starting ProtocolHandler ["ajp-nio-8009"] |
| [main] sun.reflect.DelegatingMethodAccessorImpl.invoke Server startup in [8,367] milliseconds</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Nota: es posible usar el comando <code>CURL</code> (o una herramienta cliente) para enviar una solicitud POST y luego una solicitud GET a la URL del servicio equivalente a:</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-java" data-lang="java">http://localhost:8080/simple-jms<-TOMEE-VERSION>/message</code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Finalmente, puedes salir o recargar el ejemplo ingresando uno de los comandos disponibles: |
| <code>quit</code>, <code>exit</code>, <code>reload</code>,</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="highlight"><code class="language-java" data-lang="java">[WARNING] Command '' not understood. Use one of [quit, exit, reload]</code></pre> |
| </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/ziplock/maven/Mvn.html">org.apache.ziplock.maven.Mvn</a></p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| </div> |
| </div> |
| <div style="margin-bottom: 30px;"></div> |
| <footer> |
| <div class="container"> |
| <div class="row"> |
| <div class="col-sm-6 text-center-mobile"> |
| <h3 class="white">Be simple. Be certified. Be Tomcat.</h3> |
| <h5 class="light regular light-white">"A good application in a good server"</h5> |
| <ul class="social-footer"> |
| <li><a href="https://www.facebook.com/ApacheTomEE/"><i class="fa fa-facebook"></i></a></li> |
| <li><a href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li> |
| </ul> |
| <h5 class="light regular light-white"> |
| <a href="../../../privacy-policy.html" class="white">Privacy Policy</a> |
| </h5> |
| </div> |
| <div class="col-sm-6 text-center-mobile"> |
| <div class="row opening-hours"> |
| <div class="col-sm-3 text-center-mobile"> |
| <h5><a href="../../../latest/docs/" class="white">Documentation</a></h5> |
| <ul class="list-unstyled"> |
| <li><a href="../../../latest/docs/admin/configuration/index.html" class="regular light-white">How to configure</a></li> |
| <li><a href="../../../latest/docs/admin/file-layout.html" class="regular light-white">Dir. Structure</a></li> |
| <li><a href="../../../latest/docs/developer/testing/index.html" class="regular light-white">Testing</a></li> |
| <li><a href="../../../latest/docs/admin/cluster/index.html" class="regular light-white">Clustering</a></li> |
| </ul> |
| </div> |
| <div class="col-sm-3 text-center-mobile"> |
| <h5><a href="../../../latest/examples/" class="white">Examples</a></h5> |
| <ul class="list-unstyled"> |
| <li><a href="../../../latest/examples/simple-cdi-interceptor.html" class="regular light-white">CDI Interceptor</a></li> |
| <li><a href="../../../latest/examples/rest-cdi.html" class="regular light-white">REST with CDI</a></li> |
| <li><a href="../../../latest/examples/ejb-examples.html" class="regular light-white">EJB</a></li> |
| <li><a href="../../../latest/examples/jsf-managedBean-and-ejb.html" class="regular light-white">JSF</a></li> |
| </ul> |
| </div> |
| <div class="col-sm-3 text-center-mobile"> |
| <h5><a href="../../../community/index.html" class="white">Community</a></h5> |
| <ul class="list-unstyled"> |
| <li><a href="../../../community/contributors.html" class="regular light-white">Contributors</a></li> |
| <li><a href="../../../community/social.html" class="regular light-white">Social</a></li> |
| <li><a href="../../../community/sources.html" class="regular light-white">Sources</a></li> |
| </ul> |
| </div> |
| <div class="col-sm-3 text-center-mobile"> |
| <h5><a href="../../../security/index.html" class="white">Security</a></h5> |
| <ul class="list-unstyled"> |
| <li><a href="https://apache.org/security" target="_blank" class="regular light-white">Apache Security</a></li> |
| <li><a href="https://apache.org/security/projects.html" target="_blank" class="regular light-white">Security Projects</a></li> |
| <li><a href="https://cve.mitre.org" target="_blank" class="regular light-white">CVE</a></li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="row bottom-footer text-center-mobile"> |
| <div class="col-sm-12 light-white"> |
| <p>Copyright © 1999-2022 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p> |
| </div> |
| </div> |
| </div> |
| </footer> |
| <!-- Holder for mobile navigation --> |
| <div class="mobile-nav"> |
| <ul> |
| <li><a hef="../../../latest/docs/admin/index.html">Administrators</a> |
| <li><a hef="../../../latest/docs/developer/index.html">Developers</a> |
| <li><a hef="../../../latest/docs/advanced/index.html">Advanced</a> |
| <li><a hef="../../../community/index.html">Community</a> |
| </ul> |
| <a href="#" class="close-link"><i class="arrow_up"></i></a> |
| </div> |
| <!-- Scripts --> |
| <script src="../../../js/jquery-1.11.1.min.js"></script> |
| <script src="../../../js/owl.carousel.min.js"></script> |
| <script src="../../../js/bootstrap.min.js"></script> |
| <script src="../../../js/wow.min.js"></script> |
| <script src="../../../js/typewriter.js"></script> |
| <script src="../../../js/jquery.onepagenav.js"></script> |
| <script src="../../../js/tree.jquery.js"></script> |
| <script src="../../../js/highlight.pack.js"></script> |
| <script src="../../../js/main.js"></script> |
| </body> |
| |
| </html> |
| |