【译】用maven使java web应用运行在内嵌的Jetty或Tomcat容器中 青旅半醒 2022-07-11 01:52 98阅读 0赞 更多0 开发java web应用时,能在“真实”的环境中有快速的反馈是非常实用的。本文将探寻如何使用maven使java web应用运行在内嵌的Jetty或Tomcat容器中。我将展示如何配置他们来开发Podcastpedia.org网站的工程podcastpedia。 ## 环境准备 ## 你需要有Maven,至少安装了Java 7。正常情况你应该可以自行部署和启动podcastpedia工程并看到效果 ## Jetty Maven Plugin ## 插件配置 <!-- http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html --> <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>${jetty.version}</version> <configuration> <jettyConfig>${project.basedir}/src/main/resources/config/jetty9.xml</jettyConfig> <stopKey>STOP</stopKey> <stopPort>9999</stopPort> <scanIntervalSeconds>5</scanIntervalSeconds> <scanTargets> <scanTarget>${project.basedir}/src/main</scanTarget> <scanTarget>${project.basedir}/src/test</scanTarget> </scanTargets> <contextXml>${project.basedir}/src/test/resources/jetty-context.xml</contextXml> <webAppConfig> <contextPath>/</contextPath> </webAppConfig> </configuration> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.connector.java.version}</version> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>${java.mail.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId> <version>${tomcat.jdbc.version}</version> </dependency> </dependencies> </plugin> 注意: * **jettyConfig** 指定Jetty的配置文件,下一部分将有该配置文件的具体内容 * **scanTargets** 指定了Jetty监控文件变化的文件夹 * 指定连接数据库和发邮件的 **依赖包** ## Jetty.xml配置文件 ## <?xml version="1.0" encoding="UTF-8"?> <Configure class="org.eclipse.jetty.webapp.WebAppContext"> <New id="pcmdbDS" class="org.eclipse.jetty.plus.jndi.Resource"> <Arg>jdbc/pcmDB</Arg> <Arg> <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"> <Set name="Url">jdbc:mysql://localhost:3307/pcmDB?allowMultiQueries=true </Set> <Set name="User">pcm</Set> <Set name="Password">pcm_pw</Set> </New> </Arg> </New> <New id="mailSessionId" class="org.eclipse.jetty.plus.jndi.Resource"> <Arg>mail/Session</Arg> <Arg> <New class="org.eclipse.jetty.jndi.factories.MailSessionReference"> <Set name="user">test-dev@podcastpedia.org</Set> <Set name="password">test-dev</Set> <Set name="properties"> <New class="java.util.Properties"> <Put name="mail.host">mail.podcastpedia.org</Put> <Put name="mail.debug">true</Put> <Put name="mail.transport.protocol">smtp</Put> <Put name="mail.smtp.port">25</Put> <Put name="mail.smtp.auth">true</Put> </New> </Set> </New> </Arg> </New> </Configure> 在 [ Jetty配置文件 ][Jetty_]中,你需要配置一下内容: * Server类(或者子类)以及全局的可选项 * 一个线程池(最小、最大线程数) * Connectors连接器(端口号、超时时间、缓冲区大小、协议) * 处理器结构(handler structure)(默认的处理器或者一个contextHandlerCollections) * 扫描部署的webapps和容器上下文的部署管理器 * 提供认证的登录服务 * 请求日志 ## Apache Tomcat Maven插件 ## apache tomcat maven插件的配置 <!-- https://tomcat.apache.org/maven-plugin-trunk/index.html --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- http port --> <port>8080</port> <!-- application path always starts with /--> <path>/</path> <!-- optional path to a context file --> <contextFile>context.xml</contextFile> <!-- optional system propoerties you want to add --> <systemProperties> <appserver.base>${project.build.directory}/appserver-base</appserver.base> <appserver.home>${project.build.directory}/appserver-home</appserver.home> <derby.system.home>${project.build.directory}/appserver-base/logs</derby.system.home> <java.io.tmpdir>${project.build.directory}</java.io.tmpdir> </systemProperties> <!-- if you want to use test dependencies rather than only runtime --> <useTestClasspath>false</useTestClasspath> <!-- optional if you want to add some extra directories into the classloader --> <additionalClasspathDirs> <additionalClasspathDir></additionalClasspathDir> </additionalClasspathDirs> </configuration> <!-- For any extra dependencies needed when running embedded Tomcat (not WAR dependencies) add them below --> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.connector.java.version}</version> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>${java.mail.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId> <version>${tomcat.jdbc.version}</version> </dependency> </dependencies> </plugin> 注意: * 指定tomcat的 **端口号** * 指定 **contextFile** ,用来告诉tomcat配置文件在哪里 * 指定连接数据库和发邮件的 **依赖包** ### context.xml ### <Context> <Resource name="jdbc/pcmDB" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" initialSize="5" maxActive="55" maxIdle="21" minIdle="13" timeBetweenEvictionRunsMillis="34000" minEvictableIdleTimeMillis="55000" validationQuery="SELECT 1" validationInterval="34" testOnBorrow="true" removeAbandoned="true" removeAbandonedTimeout="233" username="pcm" password="pcm_pw" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3307/pcmDB?allowMultiQueries=true" /> <Resource name="mail/Session" auth="Container" type="javax.mail.Session" username="test-dev@podcastpedia.org" password="test-dev" mail.smtp.host="mail.podcastpedia.org" mail.smtp.port="25" mail.smtp.user="test-dev@podcastpedia.org" mail.transport.protocol="smtp" mail.smtp.auth="true" /> </Context> 在context.xml中,定义了数据库和邮件资源 就这样,使用了spring框架的Java web应用可以运行轻量级的servlet容器,显然这种方式可以代替JavaEE服务器及其带来的所有成本。 ## 参考 ## 1. [Jetty Maven Plugin ][Jetty Maven Plugin] 2. [Apache Tomcat Maven Plugin ][Apache Tomcat Maven Plugin] [Jetty_]: http://www.eclipse.org/jetty/documentation/current/jetty-xml-config.html [Jetty Maven Plugin]: http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html [Apache Tomcat Maven Plugin]: https://tomcat.apache.org/maven-plugin-trunk/index.html
相关 Java应用部署:Tomcat、Jetty等容器使用示例 在Java开发中,我们常常会使用各种Web服务器(如Tomcat和Jetty)来部署我们的应用。下面以这两个常用的容器为例,演示如何进行部署。 1. **Tomcat** 部 刺骨的言语ヽ痛彻心扉/ 2024年09月15日 23:54/ 0 赞/ 5 阅读
相关 Java Web应用部署:Tomcat、Jetty等对比 Java Web应用的部署通常使用一些服务器,如Tomcat、Jetty等。以下是它们的对比: 1. **Tomcat**: - **起源与版本**:最早的Tomcat 忘是亡心i/ 2024年09月11日 18:48/ 0 赞/ 13 阅读
相关 如何用jetty maven插件运行web项目 > 这里使用maven插件来配置jetty 官方文档 [https://www.eclipse.org/jetty/documentation/jetty-9/index.h 清疚/ 2022年10月07日 01:57/ 0 赞/ 194 阅读
相关 springboot内嵌容器的tomcat和jetty的切换原理 spring-boot-starter-web模块默认是使用tomcat作为内嵌容器,如果我们想要切换为jetty,只需要添加jetty的依赖即可,如: <dependenc Love The Way You Lie/ 2022年09月27日 04:54/ 0 赞/ 158 阅读
相关 Jetty和Tomcat运行Maven Web项目几种方法 目录 1.简介 2.采用Jetty和Tomcat运行Maven Web项目 1.简介 上一篇我们介绍了用Eclipse创建了M 迷南。/ 2022年08月13日 11:58/ 0 赞/ 122 阅读
相关 【译】用maven使java web应用运行在内嵌的Jetty或Tomcat容器中 更多0 开发java web应用时,能在“真实”的环境中有快速的反馈是非常实用的。本文将探寻如何使用maven使java web应用运行在内嵌的Jetty或Tomcat 青旅半醒/ 2022年07月11日 01:52/ 0 赞/ 99 阅读
相关 在Maven Web项目中通过Java代码启动内嵌的jetty > 1. 在IDEA中,通过maven原型创建web项目 ![8263107-86a2469b7e89631b.png][] 这里要注意,是要选择`maven-arc ╰+哭是因爲堅強的太久メ/ 2022年05月08日 03:04/ 0 赞/ 210 阅读
相关 idea tomcat运行非Maven项目的web应用 本文示例一个SSM框架,非maven构建的。 1.点击+号。选择“JARs or directories”,选择你的lib目录。lib目录下是所需jar包 ![w 布满荆棘的人生/ 2022年03月28日 09:14/ 0 赞/ 536 阅读
相关 java web项目中集成Jetty作为web容器 java web项目中集成Jetty作为web容器,有需要的朋友可以参考下。 1、准备好一个非常简单点的web项目(maven项目) 2、准备好maven环境,并 绝地灬酷狼/ 2021年06月24日 13:59/ 0 赞/ 505 阅读
还没有评论,来说两句吧...