4

我正在将基于 Weblogic 10c 构建的项目(使用 servlets/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>

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

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

4

1 回答 1

5

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

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

如果您使用的是 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>

否则,你将不得不求助于一些杂技。首先,我假设您正在使用META-INF/context.xmlwebapp 中的文件来部署到 Tomcat。

  1. 会话 cookie 名称

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

  3. 配置不支持 Cookie 调试/跟踪。您将不得不编写自己的Filter(s)来复制这些功能。

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

于 2012-06-07T15:53:39.977 回答