`

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 ..............................................................................................

    JAVA上百实例源码以及开源项目源代码

    FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上...

    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