tomcat-embed-core-8.5.5tomcat数据库配置文件在哪里

在应用中嵌入Tomcat - ImportNew
很多 Java web 应用和服务,包括开源的和商业化的(比如 Alfresco, iRise, Confluence等),都倾向于将 Apache Tomcat Servlet 引擎整个嵌入到他们的分发包中。Atlatisan公司甚至只支持他们自己提供的嵌入式Tomcat 包,不再提供 WAR/EAR 形式的分发包。这些安装包包含了整个 Tomcat 引擎和配置文件,看起来确实有点大材小用。在大多数配置中,默认的配置文件甚至从来不会变动。真的有办法可以在代码中启动 Tomcat 并且只需要 tomcat 的 jar 文件作为依赖么?在下面的教程中,我们将会对 Jetty (Jetty 是一个为此目的而设计的一种嵌入式 servlet 引擎)进行测试,同时还会展示如何将 Jetty 迁移到 Tomcat 。
我开始研究嵌入式 Tomcat 是因为 BigSense 项目,该项目是一个开源 web 服务,用于模拟传感器网络。我的目的是可以将其作为一个标准的 Linux 软件包进行分发,这样就可以作为一个服务启动,而不用依赖于 Tomcat 软件包。下面的例子使用的是 Scala 语言,BigSense 项目用的也是这种开发语言,但是你也可以轻松地将所有源码和概念转换为 Java 语言。
首先,创建一个 trait(类似于 Java 中的接口),里面包含两个简单的功能,用于启动和停止 web 服务器。端口号可以从配置文件中获取。这是我的实现中唯一可配置的了,但是你也可以对 context path 添加配置。
package io.bigsense.server
* Created by sumit on 4/28/14.
trait ServerTrait {
lazy val httpPort = try {
BigSenseServer.config.options(&httpPort&).toInt
case e: NumberFormatException =& Exit.invalidHttpPort
0 //makes compiler happy
def startServer()
def stopServer()
下面是我使用 Scala 对 Jetty 的实现。大部分是直接从 Jetty 的官方文档中摘出来的。所有的静态资源(图片,CSS 和 javascript 脚本)都被直接打包到了 jar 文件中,可以作为类路径的资源进行访问。如果使用构建工具,如 SBT,Gradel 或者 Maven,可以将这些文件放到项目的 src/main/resources 目录下。Jetty 的 WebAppContext 允许调用 setResourceBase 来使用项目的静态资源。这个例子还展示了如何使用给定的 Context 路径来添加一个 Servlet (在这个例子中,只有一个 servlet,匹配根目录,名字为 MasterServlet)。还可以看到一个 EventListener 的例子。web.xml 中的大部分标准配置在 Jetty 中都可以使用代码进行设置。
package io.bigsense.server
import org.eclipse.jetty.server.Server
import org.eclipse.jetty.server.ServerConnector
import org.eclipse.jetty.server.handler.DefaultHandler
import org.eclipse.jetty.server.handler.HandlerCollection
import org.eclipse.jetty.servlet.ServletContextHandler
import org.eclipse.jetty.webapp.WebAppContext
import io.bigsense.servlet.{DBUpdateListener, MasterServlet}
class JettyServer extends ServerTrait {
val server = new Server()
val connector = new ServerConnector(server)
connector.setPort(httpPort)
server.setConnectors(Array(connector))
val context = new ServletContextHandler()
context.setContextPath(BigSenseServer.webRoot)
context.addServlet(new MasterServlet().getClass, &/*&)
context.addEventListener(new DBUpdateListener())
val fileContext = new WebAppContext()
fileContext.setContextPath(BigSenseServer.contentRoot)
fileContext.setResourceBase(BigSenseServer.getClass.getResource(&/io/bigsense/web&).toExternalForm)
val handlers = new HandlerCollection()
handlers.setHandlers(Array( fileContext, context, new DefaultHandler()))
server.setHandler(handlers)
override def startServer() {
server.start
server.join
override def stopServer() {
server.stop
Tomcat 的实现比较复杂。也没有足够的关于使用嵌入式 Tomcat 和配置代码的文档。在下面的例子中,我创建了一个 org.apache.catalina.startup.Tomcat 实例。当向 Tomcat 中添加 Servlets 时,因为一些原因需要指定它的工作目录。我这里是以一种平台依赖的方式使用系统属性 java.io.tmpdir 来获取一个临时文件夹。(注意:在本地环境下运行的时候会产生一个空的 ./tomcat.8080 目录)。虽然我不清楚怎样添加一个事件监听器,但却意识到了监听器甚至不会使用它持有的 context,因此只是手动调用它而没有使用context。最后,我在 Tomcat 的文档中没有找到类似 Jetty 中的 setResourceBase 方法来获取静态资源,因此只能创建一个自己的 StaticContentServlet,接下来将会看到。
package io.bigsense.server
import org.apache.catalina.startup.Tomcat
import io.bigsense.servlet.{StaticContentServlet, DBUpdateListener, MasterServlet}
import java.io.File
* Created by sumit on 4/28/14.
class TomcatServer extends ServerTrait {
val tomcat = new Tomcat()
tomcat.setPort(httpPort)
val tmp = new File(System.getProperty(&java.io.tmpdir&))
val ctx = tomcat.addContext(BigSenseServer.webRoot,tmp.getAbsolutePath)
Tomcat.addServlet(ctx,&bigsense&,new MasterServlet())
ctx.addServletMapping(&/*&,&bigsense&)
new DBUpdateListener().contextInitialized(null)
val cCtx = tomcat.addContext(BigSenseServer.contentRoot,tmp.getAbsolutePath)
Tomcat.addServlet(cCtx,&static&,new StaticContentServlet)
cCtx.addServletMapping(&/*&,&static&)
override def startServer() = {
tomcat.start()
tomcat.getServer().await()
override def stopServer() = tomcat.stop
这个获取静态资源的 servlet 只有一些基本功能。只是简单地找到类路径下的资源并返回。难点是正确地设置 Mime-Type。我尝试使用 javax.activation.FileTypeMap 基于扩展名来获取准确得 mime 类型,但是经常会得到错误的结果。因此,对于项目中已知静态文件的 mime 类型通过硬编码进行了实现。
package io.bigsense.servlet
import javax.servlet.http.{HttpServletRequest, HttpServletResponse, HttpServlet}
import javax.activation.FileTypeMap
import mon.io.ByteStreams
import java.net.URLConnection
import org.slf4j.LoggerFactory
* needed to serve static resources for Tomcat. Not needed for Jetty
* Created by cassius on 29/04/14.
class StaticContentServlet extends HttpServlet {
val log = LoggerFactory.getLogger(this.getClass())
override def doGet(req : HttpServletRequest, resp : HttpServletResponse) {
val resourcePath = &/io/bigsense/web/%s&.format(req.getPathInfo.stripPrefix(&/&))
val resource = getClass.getResource(resourcePath)
log.debug(&Requesting static resource %s&.format(resourcePath))
if(resource == null) {
resp.setContentType(&text/plain&)
resp.setStatus(HttpServletResponse.SC_NOT_FOUND)
resp.getWriter.write(&Not Found&)
resp.getWriter.close
resp.setContentType( getContentType(req.getPathInfo) )
ByteStreams.copy(getClass.getResourceAsStream(resourcePath), resp.getOutputStream)
resp.getOutputStream.close
def getContentType(fileName : String) = {
fileName match {
case x if x endsWith &js& =& &application/javascript&
case x if x endsWith &css& =& &text/css&
case _ =& Option[String](URLConnection.guessContentTypeFromName(fileName)) match {
case Some(s) =& s
case None =& FileTypeMap.getDefaultFileTypeMap().getContentType(fileName)
依赖相当简单,只需添加需要的 Tomcat 和 Jetty 包就可以了。下面展示了在一个 buiuld.sbt 文件中的依赖,但这样的配置只能用于 Maven,Gradel或者Ivy。检查一下,然后确认你使用的是最近版本的 Jetty 以及/或者 Tomcat,因为它们可能会有变化。
&org.eclipse.jetty& % &jetty-server& % &9.1.4.v&,
&org.eclipse.jetty& % &jetty-servlet& % &9.1.4.v&,
&org.eclipse.jetty& % &jetty-webapp& % &9.1.4.v&,
&org.rogach& %% &scallop& % &0.9.5&,
&org.apache.tomcat.embed& % &tomcat-embed-core&
% &7.0.53& ,
&org.apache.tomcat.embed& % &tomcat-embed-logging-juli& % &7.0.53& ,
&org.apache.tomcat.embed& % &tomcat-embed-jasper&
% &7.0.53& ,
从这里开始,创建一个 main 函数,然后启动你的服务器将会变得非常简单。我使用了一个名为 sbt-native-packager 的插件来创建 deb 和 rpm 文件,其中会用到相关的初始化脚本或 SystemD 服务文件。这么做允许你像安装一个标准的 Linux 安装包一样来安装 BigSense,作为标准服务独立于系统的 Tomcat,并且不需要多余的 war 或 ear 文件。
当然,这样做也有缺点。比如你有很多 web 应用都按这种方式进行部署,对于每个应用来讲就是启动一个完整 Tomcat 和 JVM 实例。即使 Tomcat 相对来讲(和 JBoss 或者 WebSphere 比起来)是轻量级的,仍然是比较重的,会耗费相当多的资源,这一点在虚拟机上尤为明显。
如果在你的空间中有很多 apps,使用系统中的 Tomcat 软件包,然后使用诸如 Fabric 之类的部署系统来维护、更新和部署你的 web 应用可能会更好点。如果你需要将应用打包给第三方,则使用嵌入式 Tomcat 是一个更好的解决方案。然而,当发现安全漏洞时,对于更新安装包来讲你就要小心了。对于嵌入式方法来讲,添加一个类似SSL的东西是比较复杂的,更好的解决方案是将类似 HAProxy 或者 Nginx 的软件作为前端代理来处理用户的 SSL 请求。
如果你是从零开始开发一个应用,应该考虑一下避免完全使用 Servlet 模式。在 JVM上,有很多为 web 服务和应用设计的异步框架,比如 Spray 和 Netty,远超这个设计于 1995 年的 HTTP Servlet API 。
如果你由于软件分发打算学习如何将 Tomcat 嵌入到 web 应用中,希望这篇教程可以帮到你。请时刻牢记以下这点,对于你给出的 jar 包和平台版本的 API 的变化,这些例子可能需要做一些调整来适配这些变化。虽然我只是讲到了 Tomcat 和 Jetty , 其实还有其它的嵌入式 Servlet 引擎,可以用相似的方式实现,甚至对于更新的非 Servlet 引擎(比如 Spray 和 Netty)来讲都有对 Servlet 的包装,这样你就可以在一些比较老的 web 应用上使用它们了。
原文链接:
- 译文链接: [ 转载请保留原文出处、译者和译文链接。]
关于作者:
(新浪微博:)
/xwjie/PLMCodeTemplate
关于ImportNew
ImportNew 专注于 Java 技术分享。于日 11:11正式上线。是的,这是一个很特别的时刻 :)
ImportNew 由两个 Java 关键字 import 和 new 组成,意指:Java 开发者学习新知识的网站。 import 可认为是学习和吸收, new 则可认为是新知识、新技术圈子和新朋友……
新浪微博:
推荐微信号
反馈建议:@
广告与商务合作QQ:
– 好的话题、有启发的回复、值得信赖的圈子
– 写了文章?看干货?去头条!
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 活跃 & 专业的翻译小组
– 国内外的精选博客文章
– UI,网页,交互和用户体验
– JavaScript, HTML5, CSS
– 专注Android技术分享
– 专注iOS技术分享
– 专注Java技术分享
– 专注Python技术分享
& 2017 ImportNewWAS8.5安装配置_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
WAS8.5安装配置
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩33页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢tomcat之 JDK8.0安装、tomcat-8.5.15安装 - 张冲andy - 博客园
随笔 - 525, 文章 - 0, 评论 - 13, 引用 - 0
前言:JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK. JDK是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。所以要想运行jsp的程序必须要有JDK的支持,理所当然安装Tomcat的前提是安装好JDK.
一、 JDK安装
1. 查看os版本[root@mysql ~]# uname -aLinux mysql 2.6.32-200.13.1.el5uek #1 SMP Wed Jul 27 21:02:33 EDT
x86_64 x86_64 GNU/Linux解释:如果有x86_64就是64位的,没有就是32位的。后面是x686或x86_64则内核是64位的,i686或i386则内核是32位的。2. 下载安装包下载JDK,地址:/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,我下载【jdk-8u131-linux-x64.tar.gz】,如下图所示:
安装Java JDK8.03.1、然后将下载了的JDK安装包mv到local文件夹下[root@mysql ~]# mv jdk-8u131-linux-x64.tar.gz
/usr/local/3.2、跳转到local下面:[root@mysql ~]# cd /usr/local/[root@mysql local]# ll jdk-8u131-linux-x64.tar.gz -rw-r--r-- 1 root root
Jun 17 17:08 jdk-8u131-linux-x64.tar.gz3.3、再将JDK解压[root@mysql local]# tar zxvf jdk-8u131-linux-x64.tar.gz
配置环境变量4.1、 在 /etc/profile 文件中添加Java相关的环境变量,将下面的内容复制到底部:JAVA_HOME=/usr/local/jdk1.8.0_131PATH=$JAVA_HOME/bin:$PATHCLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jarexport PATH JAVA_HOME CLASSPATH
注意:根据上面的配置信息,我们既可以将环境变量的配置完成,需要注意的是,PATH在配置的时候,一定要把JAVA_HOME/bin放在最前面,不然使用java命令时,系统会找到以前的java,再不往下找了,这样java这个可执行文件运行的目录其实不在$JAVA_HOME/bin下,而在其它目录下,会造成很大的问题。
4.2、 立即生效 [root@mysql local]# source /etc/profile
验证是否安装成功[root@mysql local]# java -versionjava version "1.8.0_131"Java(TM) SE Runtime Environment (build 1.8.0_131-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
如果想把java环境变量的权限控制到用户级别,你只需要修改其个人用户主目录下的.bashrc文件就可以了如:用文本编辑器打开用户目录下的.bashrc文件 在.bashrc文件末尾加入: set JAVA_HOME=/usr/share/jdk1.5.0_05 export JAVA_HOME set PATH=$JAVA_HOME/bin:$PATH export PATH set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export CLASSPATH 重新登录——————————————————————————
卸载Java JDK说明:执行java -version命令后,如果有openjdk字样显示结果,需要卸载openjdk;或者有时候安装失败或者要装新版本的JDK,可先卸载JDK:a、首先执行命令查看服务器下的JDK的版本:命令如下:rpm -qa |grep jdkb、然后执行命令:yum -y remove java java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64 将上面查询出来的每个版本依次删掉即可
二、 安装 apache-tomcat-8.5.15
前言:Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
1、 安装 apache-tomcat-8.5.15 版本的 jdk 版本要求Tomcat 8.5 requires Java SE 7 or later. Read the RELEASE-NOTES and the RUNNING.txt file in the distribution for more details.2、 os 查看 JDK 版本[root@mysql ~]# java -versionjava version "1.8.0_131"Java(TM) SE Runtime Environment (build 1.8.0_131-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
安装 apache-tomcat-8.5.15
3.0、&apache-tomcat-8.5.15的下载网址为:,截图如下:
3.1、然后将下载了的 apache-tomcat-8.5.15 安装包mv到 /usr/local/tomcat/ 文件夹下
[root@mysql ~]# mkdir /usr/local/tomcat/[root@mysql ~]# mv apache-tomcat-8.5.15.tar.gz
/usr/local/tomcat/3.2、跳转到local下面:[root@mysql ~]# cd /usr/local/tomcat/[root@mysql tomcat]# ll apache-tomcat-8.5.15.tar.gz -rw-r--r-- 1 root root 9393241 Jun 17 19:18 apache-tomcat-8.5.15.tar.gz3.3、再将 apache-tomcat-8.5.15 解压[root@mysql tomcat]# tar -zxvf apache-tomcat-8.5.15.tar.gz3.4、 catalina.sh 放置在 /etc/init.d/ 下为 tomcat 启动启动做准备[root@mysql tomcat]# cp -p /usr/local/tomcat/apache-tomcat-8.5.15/bin/catalina.sh /etc/init.d/tomcat3.5
编辑 /etc/init.d/tomcatvim /etc/init.d/tomcat在第二行加入以下内容:# chkconfig: 112 63 37# description: tomcat server init script# Source Function Library. /etc/init.d/functions
JAVA_HOME=/usr/local/jdk1.8.0_131/CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.5.15
4、 修改权限及创建目录[root@mysql tomcat]# chmod 755 /etc/init.d/tomcat[root@mysql tomcat]# chkconfig --add tomcat[root@mysql tomcat]# chkconfig tomcat on
5、 启动、关闭tomcat-- 启动[root@mysql tomcat]# service tomcat startUsing CATALINA_BASE:
/usr/local/tomcat/apache-tomcat-8.5.15Using CATALINA_HOME:
/usr/local/tomcat/apache-tomcat-8.5.15Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-8.5.15/tempUsing JRE_HOME:
/usr/local/jdk1.8.0_131/Using CLASSPATH:
/usr/local/tomcat/apache-tomcat-8.5.15/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-8.5.15/bin/tomcat-juli.jarTomcat started.
-- 浏览器中输入 http://10.219.24.21:8080/ 访问tomcat
-- 关闭[root@mysql tomcat]# service tomcat stopUsing CATALINA_BASE:
/usr/local/tomcat/apache-tomcat-8.5.15Using CATALINA_HOME:
/usr/local/tomcat/apache-tomcat-8.5.15Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-8.5.15/tempUsing JRE_HOME:
/usr/local/jdk1.8.0_131/Using CLASSPATH:
/usr/local/tomcat/apache-tomcat-8.5.15/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-8.5.15/bin/tomcat-juli.jar更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
按住视频可进行拖动
&正在加载...
请选择打赏金额:
收藏成功,可进入
查看所有收藏列表
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
用爱奇艺APP或微信扫一扫,在手机上继续观看
当前播放时间:
一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
, 可在设置中重新打开噢!
30秒后自动关闭
tomcat-embed-core-8.5.5-sources.jar">tomcat-embed-core-8.5.5-sources.jar
播放量数据:快去看看谁在和你一起看视频吧~
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
安装爱奇艺视频客户端,
马上开始为您下载本片
5秒后自动消失
&li data-elem="tabtitle" data-seq="{{seq}}"& &a href="javascript:void(0);"& &span>{{start}}-{{end}}&/span& &/a& &/li&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"& &a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
本奖品由提供
红包雨下完了,下次早点来噢~

我要回帖

更多关于 tomcat数据库配置文件在哪里 的文章

 

随机推荐