从Weblogic迁移到Apache Tomcat

时间:2012-06-07 06:33:58

标签: java tomcat servlets migration weblogic

我正在将我的项目(使用servlets / jsp / jdbc / jndi)构建在Weblogic 10c上,迁移到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>

从上到下,我有一个security-role-assignment,它将来自ldap组的用户映射到REGISTERED_USER。我认为标签会话描述符是自我解释的。然后是我的应用程序上下文根context-root。然后是一些用于将servlet注册到Weblogic的servlet定义(这也在web.xml中定义,我认为这不再需要处理)。

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

1 个答案:

答案 0 :(得分:4)

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

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

如果您使用的是servlet-3.0规范的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>

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

  1. 会话Cookie名称

    <Context sessionCookieName="nameOfCookie" />
    
  2. Cookie max-age
    在web.xml中使用标准<session-config><session-timeout />。 (从技术上讲,这会配置会话的最大年龄,但效果是相同的:会话到期后cookie基本上会变为无效。如果你真的需要cookie max-age,请阅读以下帖子:http://markmail.org/thread/u2ysiz3uxays2w4i

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

  4. 禁用网址重写需要您编写Filter来覆盖HttpServletResponse.encodeURLHttpServletResponse.encodeRedirectURL,使其成为String参数的无操作。