代码之家  ›  专栏  ›  技术社区  ›  kgrad

如何在Java/Servlet和.NET之间传输会话信息?

  •  1
  • kgrad  · 技术社区  · 16 年前

    我有一个基于Java Servlet技术的Web应用程序。我正在考虑切换到一个新的框架,可能切换到带有C和ASP MVC的.NET堆栈。我不想在开发新的应用程序时关闭当前的应用程序。目标是让旧系统运行,并在新体系结构中开发新模块。

    如果我使用Java堆栈,我认为这只是servlet映射的问题。但是,如果我切换到.NET堆栈,我将不得不在两个系统之间传输会话。这是一个简单可行的方法吗?我需要用肥皂之类的东西吗?

    有没有人有过这样的经历?

    谢谢

    3 回复  |  直到 16 年前
        1
  •  3
  •   alphazero    16 年前

    没有肥皂。它很容易:

    1)确保Java Web应用程序使用基于客户端(浏览器)的机制来跟踪会话。(cookies、url编码等)

    2)如果在当前会话中放置复杂的Java对象,则进行必要的更改,以便将其还原为(有效)键/值字典。

    3)设置一个外部系统(例如数据库),根据(1)中的会话ID存储键/值会话数据。

    4)您将不再使用servlet会话机制。相反,您需要编写返回给定会话ID映射的基本会话管理器。

    --在.net/python/woof端

    5)您仍然使用与(1)相同的容器不变机制来标识会话。

    6)您需要为.NET容器复制会话管理器(4)。您是否为(3)选择了RDBMS?那么这只不过是使用同一会话密钥对同一数据库的查询而已。

    7)您现在使用两个不同的容器为同一个应用程序提供不同的页面。

        2
  •  2
  •   Spencer Ruport    16 年前

    他们使用相同的数据库吗?只需将会话记录信息存储在数据库表记录中,并在两个系统之间传递记录的ID。

        3
  •  1
  •   Thomas Levesque    16 年前

    我认为最好的方法是在两个系统上实现自定义会话提供程序,以便将会话数据存储在公共数据库中。这在.NET中是可能的,我认为在爪哇也是可能的。

    您应该看看这个页面,它解释了如何在.NET中实现自定义会话状态存储提供程序: http://msdn.microsoft.com/en-us/library/ms178587.aspx 在vb.net中有一个示例实现(请参见页面底部的链接)