`

weblogic通过代理插件weblogic.servlet.proxy.HttpProxyServlet跨域访问导致session丢失问题的解决(转)

 
阅读更多

原文:http://ribbonchen.blog.163.com/blog/static/1183165052011074500877/

=====================================================================
之前配置了weblogic通过代理插件weblogic.servlet.proxy.HttpProxyServlet进行代理转发,实际部署发现代理服务器把第一次请求转发后,服务器端的session丢失,第二次转发请求时重新开始了新的session,导致用户登出无法继续进行操作。

参照了网上的一些资料,开始时我认为是http header中p3p设置的问题,具体参见http://www.neatstudio.com/show-1390-1.shtml
鼓捣后发现不行,于是另找出路。
重新温习了一遍cookie和session的相关基础知识,原来session在服务器端生成后分配的sessionID在客户端的保存方式是个cookie,它的生命周期在浏览器关闭后就会结束,而这个cookie的名字如果不特别设置,weblogic会以默认的名称“JSESSIONID”来设置这个cookie的名称,我两个应用的的session cookie名字都没有设置,客户端在第一次通过应用A请求代理转发到应用B时,应用B返回的同名session cookie覆盖了客户端原本的应用A的session cookie,所以导致了应用A session的丢失。
解决方法是,在应用B的weblogic.xml中的session descriptor标记中添加session cookie的名称设置,使其区别于A应用的session cookie名称,如:
<?xml version="1.0"?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <session-descriptor>
    <cookie-name>MYSESSION</cookie-name>
  </session-descriptor>
</weblogic-web-app>
 回过头来看,发现之前鼓捣的http header p3p其实是在已经设好了session cookie的名称的前提下,解决在iframe中进行跨域访问时session丢失的问题。
另外,还有一些资料是说可以设置weblogic的session复制,如在weblogic.xml中:
<session-descriptor>
  <session-param>
    <param-name>PersistentStoreType</param-name>
    <param-value>replicated</param-value>
  </session-param>
</session-descriptor>
 其实这是在weblogic集群环境中才能起作用,对代理插件weblogic.servlet.proxy.HttpProxyServlet不起作用。
分享到:
评论

相关推荐

    3.3、 Weblogic proxy负载均衡和session复制1

    Weblogic 代理负载均衡和 Session 复制 本文主要讲解了 Weblogic 代理负载均衡和 Session 复制的实现方式。...通过使用 Weblogic 代理服务器,可以实现负载均衡和 Session 复制,提高系统的可扩展性和可靠性。

    Weblogic应用部署.docx

    1. **Session复制**:通过将session数据复制到集群中的其他成员,可以在不丢失数据的情况下提高系统的可用性。 - 配置session复制时,需要确保所有节点之间能够正确地进行数据交换。 - 可以通过WebLogic控制台或...

    apache集群weblogic

    将WAR文件部署到WebLogic集群,通过Apache访问应用,观察是否能正确路由并返回预期结果。同时,Apache weblogic.xls可能是详细的配置或步骤记录,可以用来参考或验证配置过程。 总的来说,Apache集群和WebLogic的...

    spring-boot-reference.pdf

    41. Spring Session 42. Monitoring and Management over JMX 43. Testing 43.1. Test Scope Dependencies 43.2. Testing Spring Applications 43.3. Testing Spring Boot Applications 43.3.1. Detecting Web ...

    spring-framework-reference4.1.4

    Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................

    spring-framework-reference-4.1.2

    Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................

    dwr中文文档dwr中文文档dwr中文文档

    它通过在服务器端创建代理对象(Proxy Object),使得客户端可以通过调用这些代理对象的方法来执行服务器端的业务逻辑。 **1.2 第一个DWR程序:HelloWorld** - **1.2.1 将DWR放入你的工程** - 首先,需要将DWR的...

    DWR中文文档(pdf)

    - **Session管理**:解决Hibernate Session的生命周期管理问题。 **4.7 DWR与WebWork**:WebWork是一个基于Java的MVC框架,本节介绍如何在WebWork中使用DWR。 **4.8 DWR与Acegi**:Acegi是一个基于Spring的安全...

    超级有影响力霸气的Java面试题大全文档

    但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理, EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 24、...

    Tomcat总结文档

    Tomcat是轻量级的,相比其他更复杂的应用服务器如JBoss、WebLogic等,它具有较小的内存占用和更高的运行效率。 1.1 Tomcat简介 Tomcat最初由James Duncan Davidson开发,后来成为Apache软件基金会的一个项目。它...

    几种常见的JavaEE Web容器集群技术比较

    在JavaEE应用开发中,Web容器是至关重要的组成部分,它负责管理Servlet、JSP和JavaBean等组件,为应用程序提供运行环境。而当系统需要处理大量并发请求或提高可用性时,Web容器的集群技术就显得尤为重要。本文将对几...

    Tomcat学习

    通过mod_jk或mod_proxy模块,实现Apache和Tomcat之间的负载均衡和反向代理。 5.2 与JBoss、WebLogic等应用服务器比较 Tomcat轻量级、易于部署,而JBoss、WebLogic等提供更完整的Java EE服务,适合大型企业级应用。 ...

    绿色tomcat

    2. **Apache HTTP Server与 mod_proxy**:结合Apache HTTP Server,通过mod_proxy模块,可以配置虚拟主机和代理规则,将请求转发至多个Tomcat实例。 3. **集群配置**:Tomcat自身支持集群配置,通过共享session数据...

    简历模板()

    通过直接JDBC访问数据库,提高了查询性能。 - **运行环境**:Sun Solaris和Windows 2000。 **案例二:在线销售系统(ECPort—An E-Store)** - **项目核心**:构建一个通用的在线购物平台,包括用户管理、订单管理等...

Global site tag (gtag.js) - Google Analytics