在开发Java Web应用程序时,从“真实”环境中获得快速反馈非常实用。 在本文中,我将探讨如何在嵌入式容器Jetty或Tomcat中运行带有Maven的Java Web应用程序。 在Podcastpedia.org网站的支持下,我将展示如何配置它们以开发podcastpedia项目。

先决条件

您应该已经安装了Maven并至少安装了Java 7 。 理想情况下,您可以自己设置podcastpedia项目,以进行实际操作。

Jetty Maven插件

插件配置

<!-- 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每5秒查找一次更改( scanInterval
  • 定义的外部依赖关系以连接到数据库并发送电子邮件

Jetty.xml配置文件

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.xml)中 ,进行了以下配置:

  • Server类(或子类,如果已扩展)和全局选项。
  • ThreadPool(最小和最大线程)。
  • 连接器(端口,超时,缓冲区大小,协议)。
  • 处理程序结构(默认处理程序和/或contextHandlerCollections)。
  • 扫描并部署Web应用程序和上下文的Deployment Manager。
  • 提供身份验证检查的登录服务。
  • 请求日志。

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运行的端口
  • 在Tomcat查找配置时指定contextFile
  • 定义的外部依赖关系以连接到数据库并发送电子邮件

Context.xml

<Context><Resourcename="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 Framework支持的Java Web应用程序运行轻型servlet容器,可以真正替代JAVA EE服务器及其所有成本。

注意:
这些是简单的配置,但足以满足当前的开发需求。 我的建议是阅读相应的文档以获取更多高级选项和功能。

资源资源

  1. Jetty Maven插件
  2. Apache Tomcat Maven插件

翻译自: https://www.javacodegeeks.com/2015/06/run-java-web-apps-in-embedded-containers-with-maven-jetty-and-tomcat.html

使用Maven,Jetty和Tomcat在嵌入式容器中运行Java Web应用程序相关推荐

  1. 在Tomcat中部署Java Web应用程序几种方式

    在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署.在下文中$CATALINA_HOME指的是Tomcat根目录.  一.静态部署       静态部署指的是我们在服务器启动之 ...

  2. 【转】Tomcat中部署java web应用程序

    http://www.blogjava.net/jiafang83/archive/2009/06/02/279644.html 转载: 今天给大家介绍怎样在Tomcat5.5.9中部署Java We ...

  3. docker 运行java程序_Docker:在容器中运行Java应用程序

    您可以使用Docker在特定的运行时环境中运行容器中的Java应用程序.本教程介绍如何创建Dockerfile,以便在OpenJDK 8的容器中运行简单的Java应用程序. 示例应用程序由一个Main ...

  4. java osgi web开发_在Tomcat中使用Java Web应用程序的OSGi软件包

    我试图从Java Web应用程序调用OSGi包的方法.两者都应该在Tomcat 7上运行. 我已经写了一个正常的Java应用程序,它调用OSGi软件包中的方法,如本站所述:http://drupal. ...

  5. Docker(3):docker运行nginx实例以及在java容器中运行java程序

    一.目的 通过运行nginx可以充分理解运行镜像原理,以及镜像内部虚拟网络端口和服务器端口的桥接关系.同时,使用java容器,编译java文件,并且运行java程序. 二.docker运行nginx镜 ...

  6. 在 Tomcat 中部署 Java Web 程序 ( jar cvf *.war */. ) war 包

    本文基本转自:http://www.blogjava.net/ocean07000814/articles/331694.html 主要讲的是在 Tomcat 中部署 Java Web 应用程序.因为 ...

  7. java cpu分配_容器中的Java:资源分配准则

    短短几年内,容器就改变了软件行业的面貌.也许您已经到了在容器中运行Java的地步.那很棒!不幸的是,关于容器化Java应用程序的CPU和内存使用率,还有一些事情要注意,我将在下面概述. 本文假定总体上 ...

  8. c# 火狐浏览器怎么嵌入窗体中_C#WinForm窗体内Panel容器中嵌入子窗体、程序主窗体设计例子...

    C#WinForm父级窗体内Panel容器中嵌入子窗体.程序主窗体设计例子 在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序,顺便大概划分了下界面模块和配色,不足之处还望指点 主窗体窗体采用 ...

  9. 【学习笔记】Docker - 02. 在容器中运行软件(上)

    2.1 控制容器: 构建一个网站监视器 需求: 客户想让你做一个网站, 这个网站需要被紧密的监视, 如果服务器宕机了, 那么它们的团队会收到相关的邮件. 这里用到了3个容器. 第一个运行NGINX;  ...

最新文章

  1. mongoDB数据库操作工具库
  2. 什么是shell【TLCL】
  3. 由于Coinbase插件,BCH被5000万商家接受
  4. HDU 6114 Chess 【组合数】(2017百度之星程序设计大赛 - 初赛(B))
  5. leetcode 用java_LeetCode算法题-Heaters(Java实现)
  6. awd的批量脚本 pwn_AWD攻防之web入门篇
  7. linux程序接口实验,Linux程序接口实验:取进程标志及用户信息
  8. HTML5学习笔记(二)2015-12-7
  9. 视觉SLAM学习--视觉定位比赛(CVPR2020)
  10. linux sqlserver_SQL Server 与 MySQL存储引擎
  11. js.domReady
  12. 【转】000.DICOM:DICOM标准学习路线图(初稿)!!!!!!!!!!!!
  13. css样式有行内式还有什么,在行内式CSS样式中,属性和值的书写规范与CSS样式规则不相同...
  14. 朝鲜红星操作系统落后当今水准约10年
  15. 怎样应对“需求不确定型项目”?
  16. win7 java is unavailable,win7系统出现“The RPC server is unavailable”的解决方法
  17. 模型类中的常用字段类型
  18. ios vue 添加本地音乐_VUE怎么添加音乐 本地音乐添加教程
  19. 大鱼吃小鱼java源代码_大鱼吃小鱼Java课程设计
  20. 【DeepLearning】吴恩达深度学习课程笔记思维导图

热门文章

  1. java中,如何实现输入一个正整数,并将这个数字反转输出,比如输入123,输出321
  2. 检查异常和非检查异常 有空你去学一下检查异常和非检查异常
  3. Google浏览器截长图 不需要借助任何插件!!!
  4. 面试项目 java-服务端 18h58
  5. (转) SpringBoot接入两套kafka集群
  6. java继承中的 equals + hashCode+toString
  7. java文件端点续传效果图_Java单依赖性Dockerized HTTP端点
  8. vm 安装jdk1.8_JDK 13:VM.events已添加到jcmd
  9. java 抛异常 jvm_邪恶的Java技巧使JVM忘记检查异常
  10. redis lettuce_Redis Client Lettuce 5 GA发布