2010-02-18 48 views
5

如何在web.xml中定義grails應用程序以及其他servlet?在web.xml中配置grails時訪問第二個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> 

我加入到web.xml我的第二個servlet的配置:

<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目錄。

回答

0

您需要在映射中爲Grails servlet指定更具體的url-pattern,例如, /grails/**.grails左右(您可以自由選擇),以便只有與這些模式匹配的URL纔會調用Grails servlet。