1. 程式人生 > >jdk配置正確但是tomcat伺服器啟動時一閃而過

jdk配置正確但是tomcat伺服器啟動時一閃而過

今天看了些tomcat的一些東西,在啟動tomcat的時候出現了一些問題,查了網上的一些解決方案,有的說是沒配置JAVA_HOME,有的說是因為記憶體溢位,按照這些方法都試了下,發現並不能解決問題,還是內容都顯示出後伺服器就關閉了。後來想起來看下日誌,日誌內容如下:

一月 14, 2016 7:01:47 下午 org.apache.catalina.startup.Catalina start

嚴重: The required Server component failed to start so Tomcat is unable to start.
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.startup.Catalina.start(Catalina.java:689)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:731)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 9 more
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

... 11 more

這些日誌並沒有很清晰的說明問題,後來就想起來重灌系統前,自己在server.xml中配置了虛擬目錄(這種方法今天看完一個部落格JavaWeb學習總結(二)——Tomcat伺服器學習和使用(一)後發現是不明智的),重灌系統後,換了使用者名稱,以前對映的目錄在C盤的某個帶使用者名稱的目錄下,果斷找到那個檔案,把那些配置刪了,再重新啟動,就OK了。

下面是javaweb那個部落格的一些內容,原文轉載:

1、埠修改

Tomcat的所有配置都放在conf資料夾之中,裡面的server.xml檔案是配置的核心檔案。如果想修改Tomcat伺服器的啟動埠,則可以在server.xml配置檔案中的Connector節點進行

的埠修改

例如:將Tomcat伺服器的啟動埠由預設的8080改成8081埠

Tomcat伺服器啟動埠預設配置

1 <Connector port="8080" protocol="HTTP/1.1"
2                connectionTimeout="20000"
3                redirectPort="8443" />

將Tomcat伺服器啟動埠修改成8081埠

1 <Connector port="8081" protocol="HTTP/1.1"
2                connectionTimeout="20000"
3                redirectPort
="8443" />

2、

Tomcat伺服器虛擬目錄的對映方式

虛擬目錄的對映方式一:在server.xml檔案的host元素中配置

找到server.xml檔案的host元素,如下圖所示:

  

  在<Host></Host>這對標籤加上<Context path="/JavaWebApp"docBase="F:\JavaWebDemoProject" />即可將在F盤下的JavaWebDemoProject這個JavaWeb應用對映到JavaWebApp這個虛擬目錄上,JavaWebApp這個虛擬目錄是由Tomcat伺服器管理的,JavaWebApp是一個硬碟上不存在的目錄,是我們自己隨便寫的一個目錄,也就是虛擬的一個目錄,所以稱之為"虛擬目錄",程式碼如下:

複製程式碼
1 <Host name="localhost"  appBase="webapps"
2              unpackWARs="true" autoDeploy="true"
3              xmlValidation="false" xmlNamespaceAware="false">
4 
5          <Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />
6  </Host>
複製程式碼

  其中,Context表示上下文,代表的就是一個JavaWeb應用,Context元素有兩個屬性,

  Ⅰ.path:用來配置虛似目錄,必須以"/"開頭。

  Ⅱ.docBase:配置此虛似目錄對應著硬碟上的Web應用所在目錄。

  使用瀏覽器訪問"/JavaWebApp"這個虛擬目錄下的1.jsp這個web資源,訪問結果如下:

  

  1.jsp可以正常訪問,這說明我們已經成功地將將在F盤下的JavaWebDemoProject這個JavaWeb應用對映到JavaWebApp這個虛擬目錄上了,訪問"/JavaWebApp/1.jsp"就相當於訪問"F:\JavaWebDemoProject\1.jsp"

  注意:在Tomcat6之後中,不再建議在server.xml檔案中使用配置context元素的方式來新增虛擬目錄的對映,因為每次修改server.xml檔案後,Tomcat伺服器就必須要重新啟動後才能重新載入server.xml檔案。在Tomcat伺服器的文件http://localhost:8080/docs/config/context.html中有這樣的說明:

  It is NOT recommended to place <Context> elements directly in the server.xml file. This is because it makes modifying the Context configuration more invasive since the main conf/server.xml file cannot be reloaded without restarting Tomcat.

Individual Context elements may be explicitly defined:

  • In an individual file at /META-INF/context.xml inside the application files. Optionally (based on the Host's copyXML attribute) this may be copied to$CATALINA_BASE/conf/[enginename]/[hostname]/ and renamed to application's base file name plus a ".xml" extension.
  • In individual files (with a ".xml" extension) in the$CATALINA_BASE/conf/[enginename]/[hostname]/ directory. The context path and version will be derived from the base name of the file (the file name less the .xml extension). This file will always take precedence over any context.xml file packaged in the web application's META-INF directory.
  • Inside a Host element in the main conf/server.xml.

虛擬目錄的對映方式二:讓tomcat伺服器自動對映

   tomcat伺服器會自動管理webapps目錄下的所有web應用,並把它對映成虛似目錄。換句話說,tomcat伺服器webapps目錄中的web應用,外界可以直接訪問。

  例如:把F盤下的JavaWebDemoProject這個JavaWeb應用直接copy到tomcat伺服器webapps目錄中,如下圖所示:
  

  此時Tomcat伺服器就會自動為JavaWebDemoProject這個JavaWeb應用對映一個同名的虛擬目錄"/JavaWebDemoProject",然後就可以使用瀏覽器訪問這個JavaWeb應用的資源了,如下圖所示:

  

虛擬目錄的對映方式三

  參考Tomcat伺服器文件:

  In individual files (with a ".xml" extension) in the$CATALINA_BASE/conf/[enginename]/[hostname]/ directory. The context path and version will be derived from the base name of the file (the file name less the .xml extension). This file will always take precedence over any context.xml file packaged in the web application's META-INF directory.

  意思就是:在tomcat伺服器的\conf\Catalina\localhost目錄下新增一個以xml作為副檔名的檔案,xml檔案的名字可以任意取,比如下面的aa.xml,注意這一句話"The context path and version will be derived from the base name of the file",這一句話的意思翻譯過來就是"context元素的path屬性源自於是這個xml檔案的名字",上面提到過,Context元素的path屬性是用來配置虛似目錄的名稱的,所以虛似目錄的名稱就是這個xml檔案的名稱

  $CATALINA_BASE指的就是tomcat伺服器根目錄,[enginename]指的是Tomcat伺服器使用的引擎名稱,Tomcat使用的引擎是Catalina

  

  在aa.xml檔案中新增Context元素對映JavaWeb應用,程式碼如下:

1 <Context docBase="F:\JavaWebDemoProject" />

  注意:在Context元素中並沒有指明path屬性來設定虛擬目錄的名稱,那麼"F:\JavaWebDemoProject"對映的虛擬目錄名稱是神馬呢,就是當前正在編輯的這個xml檔案的名稱aa。

  

  使用這種方式對映虛擬目錄的最大好處是修改了配置檔案後不用重啟Tomcat伺服器,比如將aa.xml修改成bb.xml,Tomcat伺服器會自動Undeploying context [/aa],然後自動資訊: Deploying configuration descriptor D:\apache-tomcat-7.0.53\conf\Catalina\localhost\bb.xml

  


相關推薦

JAVA開發中遇到的jdk配置正確但是tomcat伺服器啟動一閃而過

今天看了tomcat配置的一些東西,遇到了一些問題: 1、剛開始啟動tomcat啟動不了,點選startup.bat後一閃而過,發現沒有安裝jdk,後來安裝並配置後,在命令列中用java和javac都有正確的反應。 2、再去啟動tomcat,發現出現了一大堆東西后,視窗還是

jdk配置正確但是tomcat伺服器啟動一閃而過

今天看了些tomcat的一些東西,在啟動tomcat的時候出現了一些問題,查了網上的一些解決方案,有的說是沒配置JAVA_HOME,有的說是因為記憶體溢位,按照這些方法都試了下,發現並不能解決問題,還是內容都顯示出後伺服器就關閉了。後來想起來看下日誌,日誌內容如下: 一

配置web專案啟動伺服器啟動執行該事件

1.配置web.xml檔案: <listener><listener-class>監聽器的路徑</listener-class></listener> 2.編寫java 類 package com.ronhe.romp.core.

伺服器Tomcat啟動一閃而過解決辦法

之前自己租了一個阿里雲伺服器(win7 server)玩玩,配置了tomcat釋出一些專案,後來,有時啟動tomcat6.exe的時候,doc介面一閃而過。 查看了一下log,找不到系統。 網上找了找,多是“jdk”路徑之言。 其實有三個原因。任何一個原因都會這樣。 一、如

Tomcat伺服器啟動閃退,非jdk原因

轉自網易部落格 Tomcat伺服器啟動時閃退,就我目前碰到的情況說下解決辦法: 第一種:按照網友的解決方案,在命令列cd到tomcat安裝目錄的bin目錄下,例如: C:\Users\Administrator>cd D:\ToolsPackage\tomcat\ap

IDEA中建立struts2工程tomcat伺服器啟動一直出錯

剛開始採用自動的下載的jar包,後一直包嚴重警告,啟動錯誤什麼的自動下載的jar包如圖,一直啟動錯誤,找了很多錯誤然後發現可能是jar包的問題,後來自己下載jar包,如圖所示並且移動了lib位置,其實移動不移動無所謂,你在project struts中新增好路徑就行,這樣一來

伺服器啟動Webapp的web.xml中配置的載入順序(轉

一 1、啟動一個WEB專案的時候,WEB容器會去讀取它的配置檔案web.xml,讀取<listener>和<context-param>兩個結點。 2、緊急著,容建立一個ServletContext(servlet上下文),這個web專案的所有部分都

servlet通過web.xml配置伺服器啟動自動啟動

可以通過在web.xml中寫上如下的程式碼段,即可在伺服器啟動的時候自動呼叫init()方法。並讓servlet啟動 <load-on-startup>9</load-on-startup>  裡的9,當如果有1~8的數字出現的時候在9之前啟動se

所有的環境中JDK版本都是1.8,某個程式啟動是1.7?

今天遇到個很奇怪的問題,公司開發了個eclipse plugin ide,但是啟動時,總顯示一下錯誤: Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurr

配置監聽器使項目啟動創建消費者

static web 項目 throw 監聽 註意 eve tap factory 1、web.xml中註冊監聽器<listener><listener-class>com.activemq.common.InitComponent</list

tomcat啟動一閃而過的幾種原因

雙擊tomcat的bin目錄下的startup.bat時一閃而過時,可以右鍵startup.bat找一個文字編輯器開啟,然後在文字的最後敲上pause,儲存後重新執行startup.bat,這時候視窗會留在桌面上(除錯成功,把pause去掉即可)。我們可以看到D

如何在一臺電腦裡配置多個tomcat伺服器

做專案的時候常常需要和其他人合作,當兩方用的工具,如tomcat,的版本不同時,很容易產生不相容的情況,例如此次,對方用的是tomcat9,我用的是7,7是不相容8和9的。又拗於不想把原本的7版本換掉,於是有了雙伺服器的想法。首先需要到tomcat官網下載所需要的版本,我這裡

Tomcat 伺服器啟動很慢,報資料庫連線不上,又參雜了其他專案的錯誤

       這幾天吃不好睡不好就是因為部署專案,啟動Tomcat報了連線不上資料庫(連線超時),我把ssh的幾個配置檔案重新看了好幾遍,我就納悶了,這到底是怎麼回事呀?我把錯誤資訊拿到網上查,一一看解決方案,幾乎都試了一遍還是報錯,心碎了!於是乎找群裡大神們問問,都建議叫我檢查程式碼,相關的配置檔案,可我之

配置多個tomcat伺服器

背景: 我們基本上都只在一臺電腦上啟動一個tomcat,但是當我們想在一臺電腦上啟動多個tomcat的時候,往往會因為埠衝突等各種原因啟動故障,網上找了很多配置多個tomcat的方法,但是很多都要改什麼CATALINA_HOME之類的配置,要改的東西很多,也容易出錯,這

在Windows中配置多個tomcat伺服器

一:正常部署一個解壓版tomcat,步驟 1:安裝jdk 2:環境便利配置 a:CATALINA_BASE E:\apache-tomcat b:CATALINA_HOME E:\apache-tomcat c:CLASS_PATH  .;%JAVA_HOME%\l

tomcat無法啟動一閃而過

1、當你的tomcat也出現一閃而過的情況,你可以在catalina.bat的最後面加上pause,如下圖 2、執行start.bat,會發現catalina.bat的執行介面已經保持住了,此時你檢視一下tomcat啟動所需要的條件是否全部具備,如果缺少什麼在catal

JDKTOMCAT環境變數配置及解決tomcat啟動一閃即逝問題

一、配置JDK環境變數 1、新建變數名:JAVA_HOME,變數值:C:\Program Files\Java\jdk1.7.0,即jdk路徑 2、開啟PATH,新增變數值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 3、新建變

windows下修改tomcat啟動指定的jdk

本機 添加 linu 1.7 jdk1.8 指定 windows tomcat啟動 .com   我本機默認的jdk版本是1.7,裝有tomcat7和tomcat8兩個版本的tomcat。現在是想用tomcat8使用jdk1.8來運行   1.查看tomcat啟動時使用的j

Linux環境編寫腳本安裝配置JDK,Tomcat,含Tomcat啟動

自啟 apach 文件的 wim linux word 刪除 exp 成功 mkdir /usr/javamkdir /znywImage cp -f /usr/jdk-7u79-linux-x64.tar.gz /usr/java

三步搞定IDEA配置tomcat伺服器啟動訪問

廢話不多說,直接開始我們的步數之旅 第一步:檢查自己的artifacts 配置是否配了war包 步驟:File -->Project Structure-->artifacts 如圖沒有,我們點選“+”號:選擇WEB application:Exploded