日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

tomcat部署web應(yīng)用的4種方法 配置詳解【重點(diǎn)】【總結(jié)】

 一本正經(jīng)地胡鬧 2019-08-30

在Tomcat中有四種部署Web應(yīng)用的方式,簡(jiǎn)要的概括分別是:

(1)利用Tomcat自動(dòng)部署

(2)利用控制臺(tái)進(jìn)行部署

(3)增加自定義的Web部署文件(%Tomcat_Home%\conf\Catalina\localhost\AppName.xml)

(4)手動(dòng)修改%Tomcat_Home%\conf\server.xml文件來(lái)部署web應(yīng)用

第一種方式:利用Tomcat自動(dòng)部署

利用Tomcat自動(dòng)部署方式是最簡(jiǎn)單的、最常用的方式。若一個(gè)web應(yīng)用結(jié)構(gòu)為D:\workspace\WebApp\AppName\WEB-INF\*,只要將一個(gè)Web應(yīng)用的WebContent級(jí)的AppName直接扔進(jìn)%Tomcat_Home%\webapps文件夾下,系統(tǒng)會(huì)把該web應(yīng)用直接部署到Tomcat中。所以這里不再贅述。

第二種方式:利用控制臺(tái)進(jìn)行部署

若一個(gè)web應(yīng)用結(jié)構(gòu)為D:\workspace\WebApp\AppName\WEB-INF\*,利用控制臺(tái)進(jìn)行部署的方式如下:進(jìn)入tomcat的manager控制臺(tái)的deploy區(qū)域——在Context path中鍵入"XXX"(可任意取名)——在WAR or Directory URL:鍵入D:\workspace\WebApp\AppName (表示去尋找此路徑下的web應(yīng)用)——點(diǎn)擊deploy按鈕。

然后在%Tomcat_Home%\webapps路徑下將會(huì)自動(dòng)出現(xiàn)一個(gè)名為XXX的文件夾,其內(nèi)容即是D:\workspace\WebApp\AppName的內(nèi)容,只是名字是XXX而已(這就是前面在Context path鍵入XXX的結(jié)果)。

以上說(shuō)明利用控制臺(tái)進(jìn)行部署的實(shí)質(zhì)仍然是利用Tomcat的自動(dòng)部署。

第三種方式:增加自定義的Web部署文件

若一個(gè)web應(yīng)用結(jié)構(gòu)為D:\workspace\WebApp\AppName\WEB-INF\*,這種部署方式稍微復(fù)雜一點(diǎn),我們需要在%Tomcat_Home%\conf路徑下新建一個(gè)文件夾catalina——再在其中新建一個(gè)localhost文件夾——最后再新建一個(gè)XML文件,即增加兩層目錄并新增XML文件:%Tomcat_Home%\conf\Catalina\localhost\web應(yīng)用配置文件.xml ,該文件就是部署Web應(yīng)用的配置文件。例如,我們新建一個(gè)%Tomcat_Home%\conf\Catalina\localhost\XXX.xml,該文件的內(nèi)容如下:

[html]view plaincopy
  1. <Contextpath="/XXX" reloadable="true" docBase="D:\workspace\WebApp\AppName" workDir="D:\workspace\WebApp\work"/>

注意:

(1)以上代碼中的workDir表示將該Web應(yīng)用部署后置于的工作目錄(Web應(yīng)用中JSP編譯成的Servlet都可在其中找到),如果使用的Eclipse作為IDE,一般可人為設(shè)置在WebApp的work目錄下。

如果自定義web部署文件XXX.xml中未指明workdir,則web應(yīng)用將默認(rèn)部署在%Tomcat_Home%\work\Catalina\localhost\路徑下新建的以XXX命名的文件夾下。(Web應(yīng)用中JSP編譯成的Servlet都可在其中找到)

(2)Context path即指定web應(yīng)用的虛擬路徑名。docBase指定要部署的Web應(yīng)用的源路徑。

其實(shí)開(kāi)發(fā)者可以使用安裝有Tomcat插件eclipse自動(dòng)創(chuàng)建部署文件來(lái)部署Web應(yīng)用而不必再手動(dòng)建立該文件,方法如下: 

1. 打開(kāi)Eclipse——打開(kāi)菜單欄window選擇preference(首選項(xiàng))——左側(cè)選擇Tomcat,如下圖示:

2. 可以看到上圖中高亮畫(huà)出的Context declaration mode(Context 聲明模式)中選擇以Context files增加自定義部署文件的形式部署web應(yīng)用——然后Contexts directory中指定上述文件的上級(jí)目錄(即%Tomcat_Home%\conf\Catalina\localhost)——點(diǎn)擊Apply或OK。

3. 完上述步驟,再選中Web項(xiàng)目右鍵點(diǎn)擊properties(屬性)——選擇右側(cè)的Tomcat ,如下圖所示:

4. 勾上"Is a Tomcat project"前的checkbox,將項(xiàng)目關(guān)聯(lián)至Tomcat。

在Context name中填入XXX,即Web應(yīng)用自定義部署文件名和Context path名。

在Subdirectory to set as web application root (optional)中填入要部署的Web應(yīng)用的實(shí)際路徑(即WEB-INF上級(jí)目錄)。

注意:Eclipse會(huì)自動(dòng)地將workdir設(shè)置在Workspace\WebApp\work下。

如此便自動(dòng)創(chuàng)建了%Tomcat_Home%\conf\Catalina\localhost\XXX.xml文件。啟動(dòng)Tomcat 即可自動(dòng)部署Web應(yīng)用。

第四種方式:手動(dòng)修改%Tomcat_Home%\conf\server.xml文件來(lái)部署web應(yīng)用

此方法即打開(kāi)%Tomcat_Home%\conf\server.xml文件并在其中增加以下元素:

[html]view plaincopy
  1. <ContextdocBase="D:\workspace\WebApp\AppName" path="/XXX" debug="0" reloadable="false" />

然后啟動(dòng)Tomcat即可。

當(dāng)然如果使用Eclipse,在Eclipse中的設(shè)置也有改變:打開(kāi)菜單欄window選擇preference(首選項(xiàng))——左側(cè)選擇Tomcat——可以看到上圖中高亮畫(huà)出的Context declaration mode(Context 聲明模式)中選擇以Server.xml文件來(lái)部署web應(yīng)用。

轉(zhuǎn)自 https://www.cnblogs.com/xiohao/p/3689832.html

eclipse里tomcat配置選項(xiàng)詳解

今天用Mercurial將<workspace>\Servers\Tomcat v6.0 Server at localhost-config以及

<workspace>\.metadata\.plugins\org.eclipse.wst.server.core納入版本控制,監(jiān)控了Eclipse JEE在修改Server Options的時(shí)候到底干了些啥。。

默認(rèn)的配置如下:

(1)serve modules without publishing:
讓tomcat直接使用WebContent下的東西
不會(huì)publish到<workspace>\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
勾上它會(huì)將tmp0\wtpwebapps下相關(guān)的resources刪除,
同時(shí)會(huì)修改Servers/Tomcat v6.0 Server at localhost-config/servers.xml中的serveModulesWithoutPublish=true
以及tmp0/conf/server.xml中的<Context>配置

(2)publish module contexts to separate XML files

勾選 上后會(huì)修改Servers/Tomcat v6.0 Server at localhost-config/servers.xml中的saveSeparateContextFiles=true

同時(shí)將tmp0/conf/server.xml中關(guān)于該app的<Context>元素

移動(dòng)到tmp0/conf/Catalina/localhost/appName.xml中..

(3)Automatically publish  when resources change

勾選上

這樣修改JSP后tomcat能熱加載。。(這個(gè)選項(xiàng)對(duì)java文件無(wú)效,關(guān)了以后每次也能熱加載class)

注意:

hot reload只在debug模式下有效.

參考:http:///questions/921684/how-to-tell-eclipse-3-4-wtp-to-not-restart-tomcat-on-jsp-save

另見(jiàn): https://www./eclipse/how-to-configure-hot-deploy-in-eclipse/

轉(zhuǎn)自 https://my.oschina.net/uniquejava/blog/80945

reloadable="true" 方式,雖可加載變化過(guò)或新增的類但存在以下問(wèn)題

1、內(nèi)存清空,整體web app會(huì)重新加載,web.xml中配置的監(jiān)聽(tīng)器會(huì)全部再執(zhí)行。

2、其他沒(méi)變的類也會(huì)重新加載。

3、當(dāng)系統(tǒng)很大時(shí),非常耗時(shí)。

可以使用dcevm

轉(zhuǎn)自 https://www./blog/guoba6688-sina-com-856153

修改server.xml和content.xml后自動(dòng)還原問(wèn)題

修改完tomcat目錄下的配置文件,重啟服務(wù)器后,發(fā)現(xiàn)xml會(huì)重新恢復(fù)默認(rèn)設(shè)置

原因:在eclipse里集成添加tomcat時(shí),eclipse會(huì)自動(dòng)儲(chǔ)存tomcat的配置文件。Tomcat服務(wù)器在Eclipse中啟動(dòng)時(shí),會(huì)自動(dòng)發(fā)布Eclipse中部署的項(xiàng)目,但是我的項(xiàng)目是自己手動(dòng)在外面部署的,Eclipse只認(rèn)得在它里面部署的項(xiàng)目,因此它會(huì)創(chuàng)建一個(gè)新的server.xml文件覆蓋原來(lái)的文件.

方法一:

設(shè)置Ecplise,取消掉自動(dòng)發(fā)布功能。

依次選擇 Window-Preferences-Server-Launching,取消Automatically publish when starting servers

image

方法二:

先關(guān)閉服務(wù)器。

Ecplise項(xiàng)目中有一個(gè)Server項(xiàng)目,有一個(gè)Tomcat v8.5 Server at localhost-config,

里面也有server.xml和content.xml,替換成你修改后的文件。Tomcat重新發(fā)布時(shí)會(huì)用這里的配置文件覆蓋Tomcat下的conf下的文件。

image

轉(zhuǎn)自 https://blog.csdn.net/Mint6/article/details/77800119

tomcat 配置 development true jsp

tomcat這兩種模式對(duì)大家的影響主要是在jsp的開(kāi)發(fā)當(dāng)中。大家都知道jsp需要先編譯成servlet源文件并編譯為字節(jié)碼,即生成.class文件才可以執(zhí)行,所以在jsp文件首次運(yùn)行時(shí)先要進(jìn)行編譯導(dǎo)致運(yùn)行較慢,之后的訪問(wèn)都會(huì)直接進(jìn)入執(zhí)行階段。

在開(kāi)發(fā)模式下容器會(huì)經(jīng)常檢查jsp文件的時(shí)間戳來(lái)決定是否進(jìn)行編譯,如果jsp文件的時(shí)間戳比對(duì)應(yīng)的.class文件的時(shí)間戳晚就證明jsp又進(jìn)行了修改,需要再次編譯,但是不斷地進(jìn)行時(shí)間戳的比對(duì)開(kāi)銷很大,會(huì)影響系統(tǒng)性能,而在生產(chǎn)模式下系統(tǒng)不會(huì)經(jīng)常想的檢查時(shí)間戳。所以一般在開(kāi)發(fā)過(guò)程中使用開(kāi)發(fā)模式,這樣可以在jsp修改后再次訪問(wèn)就可以見(jiàn)到修改后的效果非常方便,而系統(tǒng)上線之后就要改為生產(chǎn)模式,雖然生產(chǎn)模式下會(huì)導(dǎo)致jsp的修改需要重啟服務(wù)器才可以生效,但是上線后的改動(dòng)較少而且性能很重要。

在tomcat的安裝目錄下conf文件夾下面的web.xml文件中配置tomcat的模式。如圖一所示,在web.xml中配置參數(shù)development為true就是開(kāi)發(fā)模式,如圖二所示為false就是生產(chǎn)模式。

圖片一 
這里寫(xiě)圖片描述

圖片二

這里寫(xiě)圖片描述

在生產(chǎn)模式下也可以通過(guò)配置checkInterval參數(shù)讓tomcat每過(guò)一段時(shí)間就去檢查一下時(shí)間戳,這種跟開(kāi)發(fā)模式還是有區(qū)別的,可以稱為后臺(tái)編譯。checkInterval參數(shù)值默認(rèn)為0,單位為秒,配置位置同上。 
在開(kāi)發(fā)模式下,可用通過(guò)配置modificationTestInterval參數(shù)的值調(diào)節(jié)容器檢查時(shí)間戳的頻率,默認(rèn)值為4,單位為秒。也就是容器說(shuō)在檢查完某個(gè)jsp的時(shí)間戳之后4秒才會(huì)再次檢查,期間有對(duì)這個(gè)jsp的請(qǐng)求也不會(huì)檢查時(shí)間戳,當(dāng)然也不會(huì)重新編譯,如果設(shè)置為0,則在每次有訪問(wèn)都會(huì)檢查時(shí)間戳,可以保證編譯為最新的版本。

綜合以上所說(shuō),大家可以根據(jù)對(duì)不同情況下的需求選擇最佳的配置方案。

轉(zhuǎn)自 https://blog.csdn.net/woduoxiangfeiya/article/details/51181606

tomcat配置context的crossContext屬性

在tomcat下,context元素有一個(gè)crossContext屬性,如果配置為true,則可以實(shí)現(xiàn)在同一個(gè)tomcat下的多個(gè)web應(yīng)用之間實(shí)現(xiàn)ServletContext對(duì)象訪問(wèn)。該屬性主要用于跨應(yīng)用訪問(wèn)數(shù)據(jù)。

在實(shí)際項(xiàng)目中遇到一個(gè)奇葩需求:在同一個(gè)頁(yè)面框架下嵌套了2套應(yīng)用?。。?br>app1和app2部署在同一個(gè)tomcat,且session超時(shí)時(shí)間使用tomcat全局配置。
app2存在定時(shí)ajax刷新,導(dǎo)致app2不會(huì)存在session超時(shí)的問(wèn)題;因此,如果用戶長(zhǎng)期停留在app2某個(gè)定時(shí)刷新的頁(yè)面,就會(huì)出現(xiàn)如下情況;
app2不會(huì)出現(xiàn)session超時(shí),但是app1在指定時(shí)間之后就會(huì)session超時(shí),這時(shí)訪問(wèn)app2頁(yè)面不會(huì)跳轉(zhuǎn)到登錄頁(yè)面,而點(diǎn)擊app1頁(yè)面元素就會(huì)退出登錄,重新跳轉(zhuǎn)到登錄頁(yè)面。
給用于一種很不自然的體驗(yàn)!

為了解決這個(gè)問(wèn)題,做如下調(diào)整:
1. 首先,必須明確一個(gè)現(xiàn)實(shí):app1和app2是2個(gè)獨(dú)立的應(yīng)用,所以對(duì)于瀏覽器訪問(wèn)都會(huì)在服務(wù)器端各自生成獨(dú)立的session。
2. tomcat支持配置context元素的crossContext屬性為true,使得在app2中可以訪問(wèn)到app1應(yīng)用的ServletContext對(duì)象。
利用這個(gè)特性,可以在app2中知道app1應(yīng)用下對(duì)應(yīng)的session是否已經(jīng)超時(shí)。如果已經(jīng)超時(shí),則在訪問(wèn)app2時(shí)就退出登錄,跳轉(zhuǎn)到登錄頁(yè)面。

1. tomcat配置

<Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true"><Context path="/app1" debug="0" reloadable="true" crossContext="true" /><Context path="/app2" debug="0" reloadable="true" crossContext="true" /></Host>

2. app1端

public void login(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{
    ...
    HttpSession session = req.getSession();
    req.getSession().getServletContext().setAttribute(session.getId(), session);
    resp.sendRedirect("app2?app1sid=" + session.getId()); // 將app1對(duì)應(yīng)的sessonid傳遞給app2...
}

3. app2端

doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain)  IOException, ServletException {
    ...     (pageType == 1) {(req.getSession().getAttribute() == ) {
            String app1SesionId = request.getParameter("app1sid");
            req.getSession().setAttribute(, app1SesionId);
        }
    } {        ServletContext app1Context = req.getSession().getServletContext().getContext("/app1");
        String app1SessionId = req.getSession().getAttribute().toString();
        HttpSession app1Session = (HttpSession)app1Context.getAttribute(app1SessionId);         {
            app1Session.getAttribute("login_user");
        }  (IllegalStateException e) {
            e.printStackTrace();            req.getSession().invalidate();
            resp.sendRedirect("/app1/login.do");            ;
        }
    }
    ...    
}

關(guān)于context配置crossContext屬性詳見(jiàn):http://tomcat./tomcat-7.0-doc/config/context.html
切記:該特性只適用于多個(gè)應(yīng)用程序部署在同一個(gè)tomcat下的情形!

轉(zhuǎn)自 https://www.cnblogs.com/nuccch/p/7156142.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多