在web.xml中配置grails时访问第二个servlet

时间:2010-02-18 19:47:14

标签: grails servlets

如何使用grails应用程序以及web.xml中定义的其他servlet?

我想拥有它,以便一些url模式由servlet处理,而所有其他模式由Sitemesh / grails处理。

grails生成的web.xml的默认配置是:

<filter-mapping>
    <filter-name>charEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>grailsWebRequest</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
    <filter-name>sitemesh</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>urlMapping</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

<servlet>
    <servlet-name>grails</servlet-name>
    <servlet-class>org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

然后我将配置添加到我的第二个servlet的web.xml中:

<servlet>
    <servlet-name>Tracepoints</servlet-name>
    <servlet-class>com.mydomain.Tracepoints</servlet-class>
    <init-param>
        <param-name>hostName</param-name>
        <param-value>http://www.mydomain.com/</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Tracepoints</servlet-name>
    <url-pattern>*.tpoints</url-pattern>
</servlet-mapping>

但上面的内容不允许我访问我的非grails servlet(使用url:domain.com/hello.tpoints)并尝试获取404.我知道servlet的类文件是使用war,因为它们存在于WEB-INF / classes目录中。

1 个答案:

答案 0 :(得分:0)

您需要在映射中为Grails servlet指定一个更具体的url-pattern,例如/grails/**.grails左右(您可以自由选择),以便只有匹配这些模式的URL才会调用Grails servlet。