2011-12-20 11 views
7

मैं अगले web.xml साथ बहुत ही सरल बाकी एप्लिकेशन बनाया है:java.lang.IllegalArgumentException: फ़िल्टर मानचित्रण का उल्लेख करना होगा या तो एक <url-pattern> या एक <सर्वलेट-नाम>

<context-param> 
    <param-name>resteasy.scan</param-name> 
<param-value>true</param-value> 
</context-param> 

<listener> 
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> 
</listener> 

<servlet> 
    <servlet-name>Resteasy</servlet-name> 
    <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Resteasy</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

मैं सर्वलेट 3.0 उपयोग कर रहा हूँ विनिर्देश और टोमकैट 7.0.23। दुर्भाग्य से यह सब समय में विफल रहता है:

Caused by: java.lang.IllegalArgumentException: Filter mapping must specify either a <url-pattern> or a <servlet-name> 
    at org.apache.catalina.core.StandardContext.validateFilterMap(StandardContext.java:2995) 
    at org.apache.catalina.core.StandardContext.addFilterMap(StandardContext.java:2954) 

मैं कल्पना नहीं है, जहां समस्या है ... मैं अपने कोड में फिल्टर का उपयोग नहीं करते हैं, मैं इसे कैसे ठीक कर सकते हैं?

उत्तर

12

यह RESTEasy issue 577 से संबंधित है। इसे ठीक करने के लिए, आपको अपने /WEB-INF/web.xml की <web-app> रूट घोषणा में metadata-complete="true" जोड़ने की आवश्यकता है।

<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0" metadata-complete="true"> 

    <!-- Config here. --> 

</web-app> 

इस तरह बिलाव समझेंगे /WEB-INF/web.xml पूरा हो गया है कि और web.xml टुकड़े जो RESTEasy के मामले में जाहिरा तौर पर गलत तरीके से/अधूरे घोषित फ़िल्टर शामिल में अतिरिक्त मेटाडेटा जानकारी के लिए जार स्कैन नहीं होंगे।

+0

यह मदद करता है, धन्यवाद! –

+0

आपका स्वागत है। – BalusC

+1

+1 अच्छा काम, जासूसी। –

0

बेशक, 'मेटाडाटा-पूर्ण = "सत्य" जोड़ने से किसी भी अन्य जार को Web.xml में योगदान करने से रोक दिया जाएगा, जिसमें रिचफेस और सीम शामिल हैं। अपमानजनक जेएआर फ़ाइल को अपनी तैनाती से बाहर करना बेहतर है। मेरे मामले में, यह async-http-servlet-3.0-2.3.3 था। Final.jar जो नाराज था।

संबंधित मुद्दे