Tomcat Web应用程序部署

2、部署Web应用程序到Tomcat 本文详细介绍了如何将Web应用程序部署到Tomcat服务器,包括手动部署步骤、创建目录结构、配置ServletContext、添加JSP页面和Servlets等内容。同时探讨了Web应用程序与ServletContext之间的关系,并通过实例展示了不同Web应用程序之间资源隔离的特点。最后,还介绍了Tomcat Manager应用程序的使用方法,帮助开发者更高效地管理Web应用程序。 阅读详情

转自:http://blog.youkuaiyun.com/jiangtongcn/article/details/7629220

Tomcat Web应用程序部署

 

Introduction

部署是这个团队用于安装一个Web应用程序到Tomcat服务器的过程。

Web应用程序在Tomcat服务器的部署通常有两种方式.

·         静态的; Web应用程序在Tomcat启动前就安装好

·         动态的; 使用Tomcat Manager这个Web应用程序或者操纵已经部署的Web应用程序

Tomcat Manager 是一款工具它提供基于以URL为基础的Web应用程序部署特性。也有一种工具被称为Client Deployer, 它是一种基于脚本的“命令shell”,它与这个Tomcat Manager 交互,但是提供另外的一些功能,像编译和验证Web应用程序还有打包Web应用程序到一个WAR文件。

A word on Contexts[涉及上下文的一个词汇]

在谈到关于Web应用程序部署的时候,这个Context上下文的概念是必须明白的。. 一个上下文在Tomcat中称之为Web应用程序。

在Tomcat中为了配置一个上下文,一个上下文描述器文件是必须的。一个Context描述器是一个简答的XML文件,它包含了一个与Tomcat有关的Context的配置,例如命naming resources 或者session manager 配置.在Tomcat的早期版本这个上下文描述器配置的内容通常存储在Tomcat的主配置文件Server.xml里面。但是现在不推荐这样做了(虽然目前仍然支持)。

上下文描述不仅仅帮助Tomcat知道如何配置上下文,同时其他工具像这个Tomcat Manager和TCD通常使用这些上下文描述器去适当地完成他们的任务。

上下文描述器的位置如下:

1.      $CATALINA_BASE/conf/[enginename]/[hostname]/context.xml

2.      $CATALINA_BASE/webapps/[webappname]/META-INF/context.xml

第一种方式文件被命名为 [webappname].xml 但是在第二中方式文件被命名为context.xml. 如果上下文描述器没有被提供,Tomcat将使用缺省值配置应用程序的上下文。.

Deployment on Tomcat startup[Tomcat启动的时候部署]

如果你没有兴趣采用Tomcat Manager, or TCD 部署你的应用程序, 那么你需要采用静态方式部署你的应用程序到Tomcat, 跟随Tomcat的启动[Tomcat启动的时候会一并启动你静态部署的应用程序]。你部署的应用程序的位置要和特定虚拟主机的appBase属性描述位置一致[webapps]. 你可以拷贝一个应用程序目录[就是未压缩目录]到这个位置或者一个经过压缩的应用程序资源文件[.WAR].

Web应用程序存在的位置由虚拟主机(缺省情况下主机名是"localhost")的appBase属性(缺省的appBase 是 "$CATALINA_BASE/webapps")指定。

它们仅仅在虚拟主机的deployOnStartup 属性值是true的条件下随着Tomcat的启动被自动部署。

如果是那样的话Tomcat启动的时候将遵循以下部署顺序:

1.      任意上下文描述器文件将首先被部署。

2.      没有被任何上下文描述器引用的解压缩的Web应用程序将然后被部署。如果它们与个appBase描述路径下的.WAR文件关联并且它这个.WAR文件比展开的这个目录新,那么这个展开的目录将被删除然后这个Web应用程序将从这个.WAR文件重新部署。

3.      .WAR 文件将被部署。

Note again that for each deployed web application, a Context Descriptor will be createdunless one exists already.

Deploying on a running Tomcat server[Tomcat服务器运行期间部署]

部署一个Web应用程序到一个运行中的Tomcat服务器是可行的。

如果这个虚拟主机的autoDeploy 属性是true,这个主机将尝试去动态地部署和更新Web应用程序。.

autoDeploy设置为 "true" ,一个运行中的Tomcat 允许:

·         部署拷贝到这个虚拟主机appBase指定目录下的.WAR文件.

·         部署拷贝到这个虚拟主机appBase指定目录下的站看的Web应用程序.

·         当一个较新的.WAR文件被提供的时候重新部署Web应用程序,在这种情况下这个展开的Web应用程序目录将被删除,这个较新的.WAR文件将再次被展开。但是注意如果这个虚拟主机被配置为.WAR文件不被展开(使用unpackWARs=false),那么这个展开行为就是无法看到的。

·         如果一个Web应用程序的/WEB-INF/web.xml或者其它被定义为WatchedResource的文件被更改,那么将重新加载Web应用程序。

·         如果一个Web应用程序被部署的上下文描述器文件被更新,那么重新部署这个Web应用程序。

·         如果用于Web应用程序的全局的或者每个虚拟主机的上下文描述器文件被更新那么重新部署这个Web应用程序。

·         如果一个上下文描述器文件(文件名与部署的Web应用程序的上下文路径相符合)被添加到$CATALINA_BASE/conf/[enginename]/[hostname]/这个目录那么重新部署这个Web应用程序。

·         如果一个Web应用程序的部署目录(docBase属性指定的目录)被被删除那么撤销部署这个Web应用程序。注意在Windows系统上,这里假定防锁(参考上下文配置)功能是启用的。否则是不可能去删除一个运行的Web应用程序的资源的。

注意Web应用程序的重新加载也能够被配置在加载器[loader],那样的话被加载的类的改变将被跟踪。

实践

首先理解分析一下Tomcat的核心配置文件

Tomcat服务器是由一系列可配置的组件构成,其中核心组件是Catalina Servlet容器,它是所有其他Tomcat组件的顶层容器。Tomcat的组件可以在<CATALINA_HOME>/conf/server.xml文件中进行配置,每个Tomcat组件在server.xml文件中对应一种配置元素。以下代码呈现了各种Tomcat组件之间的关系:

<Server>

         <Service>

                   <Connector/>

                   <Engine>

                            <Host>

                                     <Context>

                                     </Context>

                            </Host>

                   </Engine>

         </Service>

</Server>

以上XML代码中,每个元素都代表一种Tomcat组件。

这些元素可分为四类。

1、  顶层元素类<Server>\<Service>

a)         Server元素类

                                       i.              <Server>元素代表整个Catalina Servlet容器,因此它在conf/server.xml文件中必须是单独的最外层元素,它的属性表示整个Servlet容器的特征。<Server>元素中可包含一个或多个<Service>元素和GlobalNamingResources元素。

b)         Service元素类

                                       i.              一个Service元素表示一个或者多个Connector元素组件的组合,这些Connector元素组件共享一个单独的Engine组件用于处理客户端到来的请求。可以有一个或多个Service元素。

2、  连接器元素类<Connector>

连接器元素类代表了介于客户与服务器之间的通信接口,负责将客户的请求发送个服务器,并将服务器的响应结果传递给客户。

a)         Http Connector

                                       i.              Http Connector元素表示一个支持HTTP/1.1协议的Connector组件.它除了他的执行Servlet和JSP页面的能力之外它使Catalina的功能能够成为一个独立的Web服务器。这个组件的一个实例在服务器的一个特定的TCP端口号上监听客户端到来的连接。一个或多个这样的Connector能被配置为单个Service的部件,附送到管理的Engine去执行请求处理和创建响应。

b)         AJP Connector

AJP Connector元素表示一个Connector组件,它通过这个AJP协议与一个Web Connector进行通信。这被用于你希望去整合Tomcat到一个存在的或新的Apache安装的情形。并且你希望Apache去处理Web项目包含的静态内容,并且或者利用Apache的SSL处理。

        

3、  容器元素类

容器元素类代表处理客户请求并生成响应的结果的组件,有3种容器类型元素,他们是Engine、Host和Context。

3.1、Engine组件为特定的Service组件处理所有客户请求,每个<Service>元素只能包含一个<Engine>元素。<Engine>元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求。并且返回完整的响应给Connector作为最终的传输返回给客户端。

3.2、Host组件为特定的虚拟主机处理所有客户请求,一个<Engine>元素中可以包含多个<Host>元素。每个<Host>元素定义了一个虚拟主机,它可以包含一个或多个Web应用。虚拟主机通常是一个网络名的关联,客户端使用虚拟主机的网络名可以连接到一个Tomato服务器。这个网络名必须在DNS服务器注册。

           在许多情况下,系统管理员希望关联多于一个网络名到相同的虚拟主机和应用程序,这个可以通过使用主机别名<Alias>来完成。

           一个或者多个Host元素被嵌套在一个Engine元素,在这个Host元素里面,对于与这个虚拟主机关联的web应用程序你能嵌套Context元素在它里面。与某个Engine关联的这些虚拟主机中的某一个必须有一个名字匹配Engine元素的defaultHost属性。

           客户端通常使用主机名来标识它希望连接的服务器。这个主机名也被包含在HTTP请求头。Tomcat从HTTP请求头提取这个主机名并且使用一个匹配名字查询一个Host。如果没有匹配被发现,这个请求被路由到缺省主机。

3.3、Context组件为特定的Web应用处理所有客户请求。<Context>元素是使用最频繁的元素。每个<Context>元素代表了运行在虚拟主机上的单个Web应用程序,它运行在一个实际的虚拟主机内,每个Web应用程序是基于一个Web应用程序档案文件或者一个相应目录包含相应的解包内容。

           Web应用程序处理每个HTTP请求的选择方式是基于请求URI的最长可能前缀匹配原则,一旦被选择,Context将依照servlet mapping的定义来选择一个合适的Servlet来处理到来的请求。

           你可以定义多个Context元素,如果你需要的话。每个Context必须拥有一个唯一的Context名字。

一个<Host>元素中可以包含多个<Context>元素。

4、  嵌套类元素

嵌套类元素代表了可以加入到容器中的组件,如<Logger>元素、<Valve>元素和<Realm>元素。

Tomcat中各个组件之间的关系:

一个Server可以包含一个到多个Service,

一个Service看一个包含多个连接器Connector和一个Engine,

多个连接器共享一个Engine

同一个Engine中可以有多个Host.

同一个Host中包含多个Context。

下面看一个具体的案例:

现有两个应用客户端访问地址分别为:

Http://localhost:8080/app1/index.jsp

Http://localhost:8080/app2/index.jsp

 

处理步骤说明:

1、  请求被8080端口监听的Connector1接收到

2、  Connector1把请求交给共享的Engine处理

3、  Engine根据HTTP请求头里面的主机头Host决定该交给那个虚拟主机处理,很明显这里主机头是locahost,因此交给locahost这个虚拟主机处理

4、  虚拟主机根据Context决定请求交给哪个应用程序上下文处理,这里客户端1发出的请求将交给app1处理。

示范:

静态部署这里不示范,这里示范动态部署。

一、通过拷贝到webapps目录来实现动态部署

我的d盘根目录有一Web应用程序app1:

先将其直接拷贝到webapps目录下:


观察Tomcat的日志输出:


如下:

信息: Deploying web application directory E:\WorkSpace\JavaWorkspace\Tomcat 7.0\webapps\app1

2012-6-3 23:18:31 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

信息: Parsing configuration file [struts-default.xml]

2012-6-3 23:18:31 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

信息: Parsing configuration file [struts-plugin.xml]

2012-6-3 23:18:31 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

信息: Parsing configuration file [struts.xml]

说明拷贝进去的项目被自动部署了。

我们再次删除这个项目,但是提示:


这个是因为应用中的jar包被锁定的缘故,查看tomcat的Context属性,如下:

http://localhost:8080/docs/config/context.html

 

antiJARLocking

If true, the Tomcat classloader will take extra measures to avoid JAR file locking when resources are accessed inside JARs through URLs. This will impact startup time of applications, but could prove to be useful on platforms or configurations where file locking can occur. If not specified, the default value isfalse.

antiJARLocking is a subset ofantiResourceLocking and therefore, to prevent duplicate work and possible issues, only one of these attributes should be set totrue at any one time.

我们修改conf/ context.xml,添加属性antiResourceLocking=true,如下:

<Context antiResourceLocking="true">

    <!-- Default set of monitored resources -->

    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->

    <!--

    <Manager pathname="" />

    -->

    <!-- Uncomment this to enable Comet connection tacking (provides events

         on session expiration as well as webapp lifecycle) -->

    <!--

    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />

    -->

</Context>

再次删除app1,就不会有上面的提示了。删除app1后我们观察日志输出:

信息: Undeploying context [/app1]

2012-6-3 23:27:02 org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks

严重: The web application [/app1] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@3ca56f]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@191394e]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

2012-6-3 23:27:02 org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks

严重: The web application [/app1] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@3ca56f]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@149494e]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

2012-6-3 23:27:02 org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks

严重: The web application [/app1] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@3ca56f]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@6bbb36]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

2012-6-3 23:27:02 org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks

严重: The web application [/app1] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@3ca56f]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@d006a7]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

二、通过为Web应用程序添加一个特定的Context文件来实现动态部署

           我们找到以下位置:conf/Catalina/localhost,这个目录代表什么?

           Catalina代表server.xml文件里面配置的默认的Service的名称。

           Localhost代表Service里面的默认虚拟主机名称。

           我们现在就是要在这个虚拟主机里面部署我们的应用。

           做法:

1、  创建一个xml文件,文件名和Web应用名相同:app1.xml。

2、  这个文件的内容如下:

a)         < Context path="/app1" docBase="d:/app1" debug="0" privileged="true" workDir="d:/app1work"></Context>

3、  将这个文件拷贝到conf/Catalina/localhost下面,完整路径就是conf/Catalina/localhost/app1.xml,这时Tomcat会自动扫描到这个文件然后根据里面的描述加载应用上下文的。

4、  观察现在的日志输出:

l  信息: Deploying configuration descriptor E:\WorkSpace\JavaWorkspace\Tomcat 7.0\conf\Catalina\localhost\app1.xml

l  2012-6-3 23:41:23 org.apache.catalina.startup.SetContextPropertiesRule begin

l  警告: [SetContextPropertiesRule]{Context} Setting property 'debug' to '0' did not find a matching property.

l  2012-6-3 23:41:24 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

l  信息: Parsing configuration file [struts-default.xml]

l  2012-6-3 23:41:24 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

l  信息: Parsing configuration file [struts-plugin.xml]

l  2012-6-3 23:41:24 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

l  信息: Parsing configuration file [struts.xml]

5、  删除这个文件后,日志输出:

l  信息: Undeploying context [/app1]

l  2012-6-3 23:43:06 org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks

l  严重: The web application [/app1] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@1f1a3a8]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@12f9ee1]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.

 

别再只玩积木了!用乐高EV3和官方软件,手把手教你做个能巡线的小车(附完整代码) 本文详细介绍了如何利用乐高EV3套件和官方软件制作智能巡线机器人,从硬件组装到软件编程全面覆盖。通过传感器原理讲解、控制算法调试等工程化细节,帮助读者掌握机器人开发的核心理念,特别适合STEAM教育和硬件编程爱好者实践。 阅读详情

相关推荐

RAD Studio 12安装全攻略:从下载到破解InterBase的完整流程(附KeyPatch使用技巧)

本文提供RAD Studio 12的完整安装指南,包括系统要求、安装步骤及InterBase数据库的高效配置方法。详细介绍了如何使用KeyPatch工具进行许可证处理,并分享了IDE优化和开发技巧,帮助开发者快速上手这一强大的跨平台开发工具。

q6r7s8t9的博客 946

Tomcat使用技巧最新总结 分类: 开发工具使用学习笔记 ...

Tomcat使用技巧最新总结 小五游侠 2015/7/22 22:30:29 1. 相信各位都会使用tomcat的另外两种部署模式,其一是将项目放到webapps目录下,其二是在tomcat的server.xml文件的host元素中配置,在这对标签加上: <Context path="/JavaWebApp" docBase="F:\JavaWebDemoP...

weixin_30834783的博客 152

python123题目——判断火车票座位B(异常)

类型:流程控制。

m0_62488776的博客 3569

java context.xml_了解tomcat 6中的context.xml

我在eclipse中创建了一个主要空的动态Web项目 .它有没有servlets没有jsp文件web.xml是testprojektindex.htmlindex.htmindex.jspdefault.htmldefault.htmdefault.jsp我在其 META-INF 文件夹中添加了 context.xml我将此项目导出为WAR文件 . 具有以下结构:user@system:$ tre...

weixin_28882565的博客 253

嵌入式Linux开发必备:设备树插件动态加载实战指南(RK356x平台为例)

本文以RK356x平台为例,详细介绍了嵌入式Linux开发中设备树插件的动态加载实战。通过configfs接口,开发者可以在系统运行时动态修改硬件配置,实现外设的即插即用与调试,无需重启设备,极大提升了开发与调试效率。

w7x8y9z的博客 441

狗都能看懂的MAML原理讲解和代码实现

meta-leaning指的是元学习,元学习是深度学习的一个分支,一个好的元模型(meta-learner)应该具备对新的、少量的数据做出快速而准确的学习。通俗的来讲, 对于人来说,给几张橘猫的图片让看一下,再给你几张没见过的英短猫图片,你一定能很快识别出来都是猫。但是对于神经网络来说,并非如此。如果让一个小汽车分类网络去识别不同的大货车,那效果肯定很差。而传统的CNN网络都是输入大量的数据,然后进行分类的学习。但是这样做的问题就是,神经网络的通用性太差了,根本达不到“智能”的标准。而人类的认知系统,可以通

个人学习笔记 6万+

关于web.xml配置的那些事儿

1.简介 web.xml文件是Java web项目中的一个配置文件,主要用于配置欢迎页、Filter、Listener、Servlet等,但并不是必须的,一个java web项目没有web.xml文件照样能跑起来。Tomcat容器/conf目录下也有作用于全局web应用web.xml文件,当一个web项目要启动时,Tomcat会首先加载项...

weixin_34101784的博客 417

时序定江山,功耗写风骨——解读时序库lib文件的奥义【芯片设计 lib文件】

lib库,全称liberty library format file:它是Liberty时序文件的简称,使用 Liberty 语法来编写。它可以通过library compiler/dc转换成.db文件(database),供synopsis家的DC和PT使用,也可以通过spyglass的library compiler来生成sglib文件,供spyglass使用。他们是等价的,但db文件是二进制格式,人类不可读。

LogicYarn的博客 2601

java cs tomcat_【转】Tomcat中部署java web应用程序

转载:今天给大家介绍怎样在Tomcat5.5.9中部署Java Web应用程序。本文的重点是如何部署,所以暂且先不介绍怎样开发Web应用程序和怎样启动Tomcat服务器,也不考虑使用的什么开发工具,总之在练习本文所说的例子之前,你应该有一个Java Web应用程序。本文假定Web应用程序的根目录为PetWeb。而且存放在F:\下。下文中$CATALINA_HOME指的是Tomcat根目录。在Tom...

weixin_39753584的博客 239

具身智能:原理、算法与系统 第3章 具身智能的感知-认知-行为框架

具身智能的PCB框架源于对生物智能系统的观察:动物通过感官接收环境信息(感知),基于内部模型进行预测和决策(认知),并通过身体执行动作改变环境(行为),而这一改变又通过感知反馈形成闭环。这一框架在两篇核心文献中得到了深入阐述:提出了系统的数学形式化和工程实现,则从认知科学角度强调了归纳偏置和双过程理论的重要性。

VectorShift的博客 154

【YOLOv8科研级优化】集成YOLOv10的SCDown采样模块,让你的模型下采样更高效更精准

打开确保模型解析器能识别SCDown模块。通过将YOLOv10的SCDown模块集成到YOLOv8中,我们实现了一个“细节保留+高效下采样”的目标检测模型。这个改进不仅在工程上能提升小目标、细粒度场景的检测效果,更在科研上提供了“分阶段下采样”的创新思路——这种思路可以延伸到其他卷积网络(如ResNet、MobileNet)的下采样层改进中,帮你在论文中打造独特的研究点。

m0_71589036的博客 136

Tomcat中部署web应用程序

Tomcat中部署web应用程序        介绍三种方式: 1.      直接将一个web应用程序放置在tomcat/webapps目录下。这时web应用程序目录名称就是我们访问tomcat下的这个应用程序的名称 2.      将一个不在tomcat下的web应用程序部署加载。我们可以在tomcat/conf/server.xml文件中配置,在server.xml文件中的结束标签

why 977

基于STC8A8K64S4A12的掉电唤醒定时器应用,极大降低产品功耗

通过合理的配置和编程,我们可以充分发挥单片机的功能,实现能效优化和电池寿命延长的目标。其中,掉电唤醒定时器是其一项重要功能,可以在系统处于睡眠状态时通过定时器的计时功能进行唤醒,从而实现对系统功耗的有效控制。使用STC8A8K64S4A12的掉电唤醒定时器功能,我们可以在不影响系统正常工作的情况下,大大降低产品的功耗。通过以上的代码,我们实现了一个简单的掉电唤醒定时器功能。当系统进入睡眠模式后,定时器开始计时,到达预设的唤醒时间后,定时器中断被触发,系统从睡眠模式唤醒,执行相应的操作。

CodeSageX的博客 1090

进入 Tomcat 应用程序管理界面和部署Web应用

1 前言 apache-tomcat-9.0.35 我们都知道 Tomcat 可以部署 war包和静态资源,一般都是放在webapps下面;但是我们还应该知道,有个界面会帮我们去完成这个操作的,当然这个界面一般是不开放的,自己用的时候可以开放出来。 开启 Tomcat服务(直接到tomcat服务器的bin目录下运行startup.sh脚本); 浏览器访问 http://localhost:8080 ,如图: 上述就是Tomcat的三个控制台界面的入口按钮,分别是Server Status控

weixin_44730681的博客 4687

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Tomcat中部署Java Web应用程序

一、静态部署 静态部署指的是我们在服务器启动之前部署我们的程序,只有当服务器启动之后,我们的Web应用程序才能访问。以下4中方式都可以部署: 1、将PetWeb目录拷贝到$CATALINA_HOME\webapps下,然后启动服务器就可以了。这种方式比较简单,访问地址如下:http://localhost:8080/PetWeb/ 2、这种方式可以不必将PetWeb目...

wsqian2011的博客 164

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

eclipse自动部署web应用程序到tomcat webapps

初始环境: JDK1.7 安装路径:C:\Java\jdk1.7.0_25,配置Path,JAVA_HOME环境变量(不配置JAVA_HOME Tomcat启动不起来) Tomcat7 安装路径:C:\apache-tomcat-7.0.54 ...

afj6149的博客 215

tomcat怎么部署多个Web应用程序?

tomcat怎么部署多个Web应用程序? 方法1:多个tomcat对应多个应用 如果这些应用的JDK一样,那么环境变量不用再去重新配置;如果这些应用的JDK不一样,则JDK环境变量配置在bin/catalina.bat中,而不是配在系统环境变量。另外,把conf/server.xml中的三个默认端口改为不一样,分别是8005,8009,8080。 方法2_1:1个tomcat部署多个应用(独用端口...

测试开发之路BeeTester 1690

java tomcat eclipse_[转载]用Tomcat 和Eclipse开发Web 应用程序(部署+发布)配置

用Tomcat 和Eclipse开发Web 应用程序(部署+发布)配置。从 Eclipse IDE,选择 File > New >Project 查看项目向导。在 Wizards 框,输入 Web,而 New Project窗口会过滤向导以只显示匹配的那些项。利用这种方法可以很容易找到向导,而无需遍历每一项。从列表中选择 Dynamic Web Project。我们要使用 Standa...

weixin_29048775的博客 210

用Eclipse远程调试部署在Tomcat下的Web应用程序

用Eclipse远程调试部署在Tomcat下的Web应用程序的方法: 安装解压版本的Tomcat,因为现在好像Tomcat的Windows安装版目录下没有catalina.sh(.bat)文件了; 修改catalina.sh(.bat)中关于JPDA_ADDRESS端口的地方,比如默认情况下,此项配置是JPDA_ADDRESS="8000",现在将其修改为我们想使用的端口

溺水的鱼 - Later equals never. 1319

在Tomcat中部署Java Web应用程序

让大家久等了。今天给大家介绍怎样在Tomcat5.5.9中部署Java Web应用程序。本文的重点是如何部署,所以暂且先不介绍怎样开发Web应用程序和怎样启动Tomcat服务器,也不考虑使用的什么开发工具,总之在练习本文所说的例子之前,你应该有一个Java Web应用程序。本文假定Web应用程序的根目录为PetWeb。而且存放在F:/下。下文中$CATALINA_HOME指的是Tomcat根目录。

lddongyu 4440

Tomcat中部署Web应用程序的几种方式

在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署。(在下文中$CATALINA_HOME指的是Tomcat根目录。) 静态部署指的是我们在服务器启动之前部署我们的程序,只有当服务器启动之后,我们的Web应用程序才能访问。下面主要讲述一下静态部署的几种方式: 1、将web工程下的WebRoot目录拷贝到$CATALINA_HOME\webapps下,然后启动服务器就可以了

Talk is cheap, show me the code. ---Linus Torvalds 808

Tomcat中部署Java Web应用程序的几种方式

在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署。 在下文中$CATALINA_HOME指的是Tomcat根目录。 一、静态部署      静态部署指的是我们在服务器启动之前部署我们的程序,只有当服务器启动之后,我们的Web应用程序才能访问。以下3中方式都可以部署:     1、将PetWeb目录拷贝到$CATALINA_HOME\webapps下,然后启动服务器就可...

iteye_8039的博客 156

如何在 Tomcat 中部署一个 Java Web 应用程序?

在Tomcat中部署Java Web应用程序可通过以下专业流程实现:1. 标准WAR包部署 部署操作: 2. 手动上下文配置 3. 热部署配置(开发环境) 4. 多环境部署策略 5. 安全加固措施 6. 日志监控配置 7. 性能调优参数 8. 集群化部署方案

weixin_45422672的博客 258
上一篇: Webservice理解:Socket与Webservice的区别
下一篇: 环境变量【详解】—如何在cmd命令行中查看、修改、删除与添加环境变量
HNFXS985
博客等级 码龄14年 219粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值