与Glassfish的UrlRewriteFilter

时间:2010-07-09 22:35:37

标签: url-rewriting glassfish glassfish-3

如何在Glassfish v3服务器中集成URL重写?

我想知道这一点的原因是我正在使用Quercus将PHP应用程序部署到我的Glassfish服务器中。

但Quercus依赖Apache服务器中的mod_rewrite来提供URL重写,这在Glassfish中不可用。

2 个答案:

答案 0 :(得分:1)

嗯,你有两个选择:

  • 使用Apache前面的GlassFish实例并使用mod_rewrite
  • 或使用Tuckey的Url Rewrite Filter

我猜前者不是一个选项(或者你不会发布这个问题)。关于后者,您可以调整Drupal on Glassfish with clean urls using Url Rewrite Filter中给出的解决方案。基本上,你必须:

  • 获取Quercus的战争并打开包装
  • 下载the filter并将其解压缩到Quercus内(这会将过滤器jar放在WEB-INF/lib内,urlrewrite.xml放在WEB-INF
  • web.xml中声明过滤器(请参阅说明书)
  • 将您的重写规则“移植”到urlrewrite.xml文件
  • 重新包装和部署战争(或将其部署为爆炸档案)

答案 1 :(得分:0)

我几个星期以来一直在寻找答案。 按照JBoss的这些说明操作: http://tapomay.blogspot.com/2011/11/clean-urls-with-drupal-urlrewritefilter.html

他链接到一篇文章,其中一篇文章为Tomcat做过:http://www.brianshowalter.com/blog/running_drupal_on_quercus

简而言之,只有在系统上不存在所请求的文件或目录时才要重写URL。这就是为什么UrlRewriteFilter还不够。你必须在UrlRewriteFilter中添加一个类过滤器来检查它。

我链接的说明使用较旧版本的UrlRewriteFilter(3.2.0),它可能与较新版本(我用3.2.0做)一样好。

您将与类过滤器结合使用(有一个google项目存储库,感谢链接文章的作者,https://code.google.com/p/drupalrewritefilter/

说明说要将文件添加到Eclipse,但是我使用了Netbeans(只是用现有的源启动一个新项目)。

您需要添加servlet.api.jar(系统中的某些位置,如果已安装J2EE)以及用于构建的类路径的UrleRewriteFilter.jar文件。

将生成的drupalrewritefilter.jar文件和您正在使用的UrlRewriteFilter.jar文件放在WEB-INF / lib中

您的WEB-INF / web.xml应具有此过滤器指令:

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    <init-param>
        <param-name>logLevel</param-name>
        <param-value>TRACE</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

使用此代替UrlRewriteFilter网站所说的那个。

注意: Quercus安装在Servlet API 2.2或2.3的开头包含一个DOCTYPE标记。但<filter>标记位于Servlet API 2.4或更高版本中。除非您链接到新的Server API DTD或(这就是我所做的)只是删除DOCTYPE标记,否则您的应用程序将会出错。

然后你应该有一个WEB-INF / urlwrite.xml:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
        "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">

<urlrewrite>
    <class-rule class="com.brianshowalter.drupalrewrite.DrupalRule" />
</urlrewrite>

重新加载你的drupal应用,然后启用干净的URLS