<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>
...
...
<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>
解决方案 »
- java里,long型除法运算问题
- struts 2 标签的问题
- 关于logic:iterate标签的问题
- 做项目的详细流程,请高手指点
- proxool.xml 连接数据库有问题?请大家帮帮小弟!感激不尽。。。
- 新手问题,找不到servlet.jar
- JBoss的8080和Oracle的8080冲突怎么办
- 望weblogic8.1部署了第一个web project就出现问题了,大哥大姐们帮帮忙,在线等,,解决了就给分!!!!!!
- 关于复制网页的剪贴板信息问题
- 如何在过滤器中获取response中的“info”和“success”的值
- 一个自定义比较器传入自定义对象的问题
- java 执行sessionFactory.getCurrentSession()报错
我是配置在HOST下的,只不过用标号....没写出来
贴出web.xml、Service.xml、Context.xml配置看看。
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>
真实环境:我配置了工程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>
而且端口都变了,显然不能共用session。
但可以共用Cookie(实际上也隐性地共用了Session,只是服务端要判断下JSessionID),在Context.xml里加上sessionCookiePath,如果指定了域名,可以加上sessionCookieDomain。
<Context sessionCookiePath="" sessionCookieDomain="">
一、请问是这样么<Context sessionCookiePath="/" sessionCookieName="JSESSIONID">
二、但是为什么<Context path="/A" <Context path="/B" 这样加上别名就没问题了呢?
<Context path="/B"
这是不是在同一个Service下?查看下Tomcat进程有几个。sessionCookieName="JSESSIONID"不是这样子,它是指有二级域名的情况下,例如www.abc.com和passport.abc.com要共享Cookie就可以写为sessionCookieName=".abc.com"
<Context path="/A"
<Context path="/B"
在同一个server.xml下的两个Service下,TOMCAT进程就一个啊
A和B网站,仅仅对应的端口不同,IP是一样的。没有进行域名解析,直接用的是IP+端口。