从 Weblogic 迁移到 Apache Tomcat

MaV*_*SCy 3 java migration tomcat servlets weblogic

我正在将基于 Weblogic 10c 构建的项目(使用 servlet / jsp / jdbc / jndi)迁移到 Apache Tomcat 7.0.22。我已经成功配置了 ldap 身份验证服务器,并替换了 weblogic 使用的 xxx-jdbc.xml。现在我的问题是我正在尝试迁移 web Content/WEB-INF 目录中找到的 weblogic.xml 文件。xml文件的内容如下:

<?xml version = '1.0' encoding = 'UTF-8'?>
<weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd"
              xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app">
  <security-role-assignment>
    <role-name>REGISTERED_USER</role-name>
    <principal-name>GROUP_NAME_FROM_LDAP</principal-name>
  </security-role-assignment>
  <session-descriptor>
    <debug-enabled>false</debug-enabled>
    <tracking-enabled>true</tracking-enabled>
    <cookie-name>nameOfCookie</cookie-name>
    <cookie-max-age-secs>-1</cookie-max-age-secs>
    <url-rewriting-enabled>false</url-rewriting-enabled>
    <encode-session-id-in-query-params>false</encode-session-id-in-query-params>
    <sharing-enabled>false</sharing-enabled>
  </session-descriptor>
  <context-root>my_app_context_root</context-root>
  <servlet-descriptor>
    <servlet-name>FileDownload</servlet-name>
  </servlet-descriptor>
</weblogic-web-app>
Run Code Online (Sandbox Code Playgroud)

从上到下,我有安全角色分配,它将 ldap 组中的用户映射为拥有 REGISTERED_USER。我认为标签会话描述符是自我解释的。然后是我的应用程序上下文根上下文根。然后是一些 servlet 定义,用于将 servlet 注册到 Weblogic(这也在 web.xml 中定义,我认为这不需要更多处理)。

那么在我的应用程序中迁移此 weblogic.xml 文件的最佳方法是什么?

Chr*_*ltz 5

在 Tomcat 中,这些东西可以在几个不同的地方定义。

对于security-role重新映射,请使用 web.xml 中的标准<security-role-ref>来重新映射角色名称。

如果您使用的是 servlet-3.0-spec webapp,那么许多与会话和 cookie 相关的项目都可以通过 web.xml 获得:

<session-config>
  <cookie-config>
    <name>nameOfCookie</name>
    <max-age>-1</max-age>
  </cookie-config>
  <!-- just don't use "URL" to disable rewriting -->
  <tracking-mode>COOKIE</tracking-mode>
</session-config>
Run Code Online (Sandbox Code Playgroud)

否则,你将不得不诉诸一些杂技。首先,我假设您正在使用META-INF/context.xmlweb 应用程序中的一个文件来部署到 Tomcat。

  1. 会话 cookie 名称

    <Context sessionCookieName="nameOfCookie" />
    
    Run Code Online (Sandbox Code Playgroud)
  2. Cookie max-age
    使用 web.xml 中的标准<session-config><session-timeout />。(从技术上讲,这配置了会话的 max-age,但效果是相同的:cookie 在会话过期后本质上会变得无效。如果您确实需要 cookie max-age,请阅读此线程:http://markmail。组织/线程/u2ysiz3uxays2w4i )

  3. 配置不支持 Cookie 调试/跟踪。您必须编写自己的Filter代码来复制这些功能。

  4. 禁用 URL 重写将要求您编写一个Filter覆盖它们的参数HttpServletResponse.encodeURL并且HttpServletResponse.encodeRedirectURL对其参数不进行任何操作的代码String