2012-02-10 10 views
0

以下のコンフィグレーションで、Restリソースとカスタムサーブレットの両方を持つアプリケーションがあります。それに続いて、残りのリソースに到達できますが、サーブレットには到達できません。既存のサーブレットでアプリケーション内のリソースをスキャンする

<?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リソースを呼び出すが、**サーブレットは呼び出さない**。 '/ abc/*'に '/ abc/api/* 'と一致しない*/* *のリクエストだけがサーブレットを呼び出すはずです。 – BalusC

+0

はい、基本的な要件はあなたが精緻化したものとまったく同じですが、どういうわけかは機能しません。 –

+0

どのサーブレット・コンテナを使用していますか? – BalusC

答えて

0

私はシンプルなアプリでテストされ、これ以下の設定は限りサーブレットが懸念しているとして動作します。あなたのweb.xmlファイルと私の間の唯一の変化は、メタデータの完全=真ですが、私は(これは動作します)のみサーブレットの一部

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()); 
    } 

} 
関連する問題