<Context>节点应该配在<Host>下,而不是<Service>节点下:<Service name="Catalina">
    ...
    ...
    <Connector port="100"....../>
    <Engine name="Catalina" defaultHost="localhost">
         <Host name="localhost" debug="0" appBase="" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 
<Context path="/" docBase="D:/TEST/A/WebRoot/" debug="1" reloadable="false" allowLinking="true"></Context> 
</Host>
    </Engine>
</Service>

解决方案 »

  1.   


    我是配置在HOST下的,只不过用标号....没写出来
      

  2.   

    Cookie有没有设置默认的path?
    贴出web.xml、Service.xml、Context.xml配置看看。
      

  3.   

    session是否一样与加不加别名A一点关系都没有,还是从别的角度分析一下吧,为什么session不一样。
      

  4.   


    server.xml
    <Service name="A">
          
        <Connector port="99".../>  
           
        ......
      
        <Engine name="A" defaultHost="localhost">  
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  resourceName="UserDatabase"/>  
          <Host name="localhost" appBase="A"   unpackWARs="true" autoDeploy="true"   xmlValidation="false" xmlNamespaceAware="false">   
       
    <Context path="/" docBase="D:/Workspaces/A/WebRoot/" debug="0" reloadable="true"  />
          </Host> 
        </Engine> 
      
    </Service>
    <Service name="B">
          
        <Connector port="92" .../>  
      
        ......
        <Engine name="B" defaultHost="localhost">  
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  resourceName="UserDatabase"/>  
          <Host name="localhost" appBase="B"   unpackWARs="true" autoDeploy="true"   xmlValidation="false" xmlNamespaceAware="false"> 
       
    <Context path="/" docBase="D:/Workspaces/B/WebRoot/" debug="0" reloadbale="true"  />
          </Host> 
        </Engine> 
      
    </Service>context.xml
    <Context><WatchedResource>WEB-INF/web.xml</WatchedResource>
    </Context>
      

  5.   


    真实环境:我配置了工程A,B,现在的问题是
    如果A,B这样配置,
    http://xxx.xxx.xxx.xxx:99/A/testA.jsp
    http://xxx.xxx.xxx.xxx:92/B/testB.jsp
    <Context path="/A" ..../>
    <Context path="/B" ..../>
    那么testA.jsp,testB.jsp公用一个SESSION(SESSIONID)如果A,B这样配置,
    http://xxx.xxx.xxx.xxx:99/testA.jsp
    http://xxx.xxx.xxx.xxx:92/testB.jsp
    <Context path="/" ..../>
    <Context path="/" ..../>
    那么testA.jsp,testB.jsp的SESSION(SESSIONID)是不同的
    server.xml配置如下<Service name="A">
          
        <Connector port="99".../>  
           
        ......
      
        <Engine name="A" defaultHost="localhost">  
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  resourceName="UserDatabase"/>  
          <Host name="localhost" appBase="A"   unpackWARs="true" autoDeploy="true"   xmlValidation="false" xmlNamespaceAware="false">   
       
    <Context path="/" docBase="D:/Workspaces/A/WebRoot/" debug="0" reloadable="true"  />
    <Context path="/A" 如果A,B这样配置,那么testA.jsp,testB.jsp公用一个SESSION
          </Host> 
        </Engine> 
      
    </Service>
    <Service name="B">
          
        <Connector port="92" .../>  
      
        ......
        <Engine name="B" defaultHost="localhost">  
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  resourceName="UserDatabase"/>  
          <Host name="localhost" appBase="B"   unpackWARs="true" autoDeploy="true"   xmlValidation="false" xmlNamespaceAware="false"> 
       
    <Context path="/" docBase="D:/Workspaces/B/WebRoot/" debug="0" reloadbale="true"  />
    <Context path="/B" 如果A,B这样配置,那么testA.jsp,testB.jsp公用一个SESSION
          </Host> 
        </Engine> 
      
    </Service>
      

  6.   

    这样的配置应该是跑了两个java进程,使用命令查看一下:ps auwx|grep tomcat
    而且端口都变了,显然不能共用session。
    但可以共用Cookie(实际上也隐性地共用了Session,只是服务端要判断下JSessionID),在Context.xml里加上sessionCookiePath,如果指定了域名,可以加上sessionCookieDomain。
    <Context  sessionCookiePath="" sessionCookieDomain="">
      

  7.   


    一、请问是这样么<Context  sessionCookiePath="/" sessionCookieName="JSESSIONID">
    二、但是为什么<Context path="/A"     <Context path="/B" 这样加上别名就没问题了呢?
      

  8.   

    <Context path="/A"     
    <Context path="/B"
    这是不是在同一个Service下?查看下Tomcat进程有几个。sessionCookieName="JSESSIONID"不是这样子,它是指有二级域名的情况下,例如www.abc.com和passport.abc.com要共享Cookie就可以写为sessionCookieName=".abc.com"
      

  9.   


    <Context path="/A"     
    <Context path="/B"
    在同一个server.xml下的两个Service下,TOMCAT进程就一个啊
      

  10.   


    A和B网站,仅仅对应的端口不同,IP是一样的。没有进行域名解析,直接用的是IP+端口。