同一個tomcat中部署多個工程,不能訪問的問題


個人解決最快的方法是:給每個工程的web.xml中加入一個

<context-param> 
<param-name>webAppRootKey</param-name> 
<param-value>web1.root</param-value> 
</context-param> 

保證

<param-value>web1.root</param-value> 不同。

<param-value>web2.root</param-value> 

 

最近有個項目需要在tomcat部署多個項目:(個人解決方案) 
第一種: 
在host中加: 
<Host name="localhost" appBase="webapps" 
       unpackWARs="true" autoDeploy="true" 
       xmlValidation="false" xmlNamespaceAware="false"> 

<Context path="/xfpm222"  docBase="D:\running\Xfpm2" debug="0" reloadable="true"> 
<Resource name="jdbc/Oraclexfpm222" auth="Container" type="javax.sql.DataSource"  maxActive="100"   maxIdle="50"   maxWait="-1" username="xfpm2"   

password="xfpm2"   driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@162.8.156.40:1521:orcl"/> 
</Context> 
</Host> 

報錯1: 
java.lang.IllegalStateException: Web app root system property already set to dif 
ferent value: 'webapp.root' = [D:\running\Xfpm2\] instead of [C:\Program Files\T 
omcat 5.5\webapps\Xfpm2\] - Choose unique values for the 'webAppRootKey' context 
-param in your web.xml files! 
        at org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(Web 
Utils.java:132) 
        at org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebC 
onfigurer.java:118) 
...... 

解決1: 
是兩個項目的設置重復了,導致出錯,但我發現web.xml里並沒有配置webAppRootKey項,然后查閱網上資料 
,原來是因為如果沒有web.xm 內沒有設置webAppRootKey項,是為默認設置 

public  static  void  setWebAppRootSystemProperty(ServletContext servletContext) throws  IllegalStateException  { 
        String  param = servletContext.getInitParameter(WEB_APP_ROOT_KEY_PARAM); 
        String  key = (param != null  ? param : DEFAULT_WEB_APP_ROOT_KEY); 
        String  oldValue = System .getProperty(key); 
        if  (oldValue != null ) { 
            throw  new  IllegalStateException ("WARNING: Web app root system property already set: "  + key + " = "  + 
                                                                 

            oldValue + " - Choose unique webAppRootKey values in your web.xml files!" ); 
        } 
        String  root = servletContext.getRealPath("/" ); 
        if  (root == null ) { 
            throw  new  IllegalStateException ("Cannot set web app root system property when WAR file is not  

expanded"); 
        } 
        System .setProperty(key, root); 
        servletContext.log("Set web app root system property: "  + key + " = "  + root); 
    } 

從代碼看出,該方法其實就是把該web application的根目錄的絕對文件路徑作為屬性保存在 System的屬性列表中。該屬性的名字,由web.xml文件中的名為"webAppRootKey"的參數值指出。 

如果不在web.xml中定義 webAppRootKey參數,那么屬性名就是缺省的"webapp.root".在我們的petclinic項目中已經定義了 webAppRootKey參數,其值為"petclinic.root",因此,屬性的名字 

就是"petclinic.root". 

最后將webAppRootKey項配置好,錯誤解決。 

以上解釋懂一點,但是自己解決方法:在web.xml中加: 
<context-param> 
<param-name>webAppRootKey</param-name> 
<param-value>web1.root</param-value> 
</context-param> 
另一個項目中加: 
<context-param> 
<param-name>webAppRootKey</param-name> 
<param-value>web2.root</param-value> 
</context-param> 


報錯2: 

Caught exception while loading file struts-default.xml - [unknown location] 
        at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loa 
dConfigurationFiles(XmlConfigurationProvider.java:795) 
        at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loa 
dDocuments(XmlConfigurationProvider.java:132) 
...... 

解決2:可能是出現包之間的沖突,可以把沖突的包放在tomcat的common中(xerces-2.6.2.jar) 

報錯3: 
java.lang.NullPointerException 
        at jimmystudio.util.table.TableParser.getPageCount(Unknown Source) 
        at jimmystudio.util.table.TableParser.getPage(Unknown Source) 
        at jimmystudio.util.table.TableUtils.init(Unknown Source) 
        at org.apache.jsp.util.table.table_jsp._jspService(table_jsp.java:57) 
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper 
.java:332) 

解決3:這是同一數據庫,出現找不到數據(不知道是頁面緩存的問題,還是數據庫連接的問題) 
如果數據用同一數據庫可能出現報錯!! 
解決另外建立數據庫、用戶名和密碼,分開連接。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM