2012-02-10 21 views
0

我有一個具有Rest資源和自定義Servlet的應用程序,具有以下配置。在它之後,剩餘資源可以到達,但servlet不可訪問。使用現有servlet掃描應用程序中的其餘資源

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
id="WebApp_ID" version="3.0"> 
<display-name></display-name> 
<listener> 
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> 
</listener> 
<context-param> 
    <param-name>resteasy.scan</param-name> 
    <param-value>true</param-value> 
</context-param> 
<context-param> 
    <param-name>resteasy.servlet.mapping.prefix</param-name> 
    <param-value>/abc/api/*</param-value> 
</context-param> 
<servlet> 
    <description></description> 
    <display-name>Servlet1</display-name> 
    <servlet-name>Servlet1</servlet-name> 
    <servlet-class>com.servlet.Servlet1</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Servlet1<servlet-name> 
    <url-pattern>/abc/*</url-pattern> 
</servlet-mapping> 

+0

什麼是功能要求?到目前爲止發佈的配置中,'/ abc/api/*'上的所有請求都將調用Rest資源,但不支持該servlet。只有* /不匹配'/ abc/api/*'的'/ abc/*'請求才能調用這個servlet。 – BalusC 2012-02-10 13:35:32

+0

是的,基本要求與您所闡述的完全相同,但它在某種程度上不起作用。 – 2012-02-10 15:06:34

+0

您正在使用哪個servletcontainer? – BalusC 2012-02-10 15:10:44

回答

0

我用一個簡單的應用程序進行測試,這下面的配置儘可能的servlet而言工作。你的web.xml和我之間唯一的變化是元數據的完整=真,我沒雖然只是servlet的部分

http://serverurl/contextRoot/abc/Servlet1(這工作)

<?xml version="1.0" encoding="UTF-8"?> 
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web- app_3_0.xsd" 
    id="WebApp_ID" version="3.0" metadata-complete="true"> 
    <display-name></display-name> 
     <context-param> 
      <param-name>resteasy.scan</param-name> 
      <param-value>true</param-value> 
     </context-param> 
     <context-param> 
      <param-name>resteasy.servlet.mapping.prefix</param-name> 
      <param-value>/abc/api/*</param-value> 
     </context-param> 
    <listener> 
    <display-name>Rest Easy JBOSS</display-name> 
    <listener-class> 
     org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> 
    </listener> 
    <servlet> 
     <display-name>Servlet1</display-name> 
     <servlet-name>Servlet1</servlet-name> 
     <servlet-class>prasanna.servlets.PrintEnvServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Servlet1</servlet-name> 
     <url-pattern>/abc/*</url-pattern> 
     </servlet-mapping> 
    </web-app> 

我的servelt類

測試剩餘部分
public class PrintEnvServlet extends HttpServlet 
    { 

    private static final long serialVersionUID = 4765435575183820979L; 

    protected void doGet(javax.servlet.http.HttpServletRequest req,  javax.servlet.http.HttpServletResponse resp) throws javax.servlet.ServletException, java.io.IOException 
    { 
    java.util.Map<String,String> mapOfEnv = System.getenv(); 
    StringBuilder builder = new StringBuilder(); 
    for(String key : mapOfEnv.keySet()) 
    { 
     builder.append(key); 
     builder.append(":"); 
     builder.append(mapOfEnv.get(key)); 
     builder.append("\n\n"); 
    } 
    resp.getWriter().write(builder.toString()); 
    } 

} 
相關問題