जर्सी: 1.12 स्प्रिंग: 3.11 JDK: 1.6.0_35 बिलाव: 6..0.33जर्सी ;: SpringServlet के माध्यम से इंजेक्ट ExceptionMapper उदाहरण पंजीयन
मैं एक जर्सी सर्वलेट कि instantiated कर रहे हैं के लिए ExceptionMapper उदाहरणों रजिस्टर करने के लिए कोशिश कर रहा हूँ स्प्रिंगसर्वलेट के संदर्भ में स्प्रिंग आईओसी कंटेनर द्वारा, और जर्सी सर्वलेट प्रारंभिकरण के दौरान आप पुराने वर्ग में चल रहे हैं "घटक वर्ग एक्स का दायरा एक सिंगलटन होना चाहिए" अपवाद। मैं इस समय वास्तविक कोड पोस्ट करने की स्थिति में नहीं हूं, इसलिए मैं कार्यान्वयन के अनिवार्य रूप से यह देखने के लिए जा रहा हूं कि कुछ स्पष्ट रूप से किसी पर कूदता है, या यदि मेरे पास कुछ दस्तावेज पर ध्यान दिया जा सकता है चुक गया।
ExceptionMapper उदाहरण अनिवार्य रूप से इस प्रकार है:
// ... package definitions omitted ...
@Provider
@Singleton
public class MyExceptionMapper
implements ExceptionMapper<MyException>
{
// ... injected attributes omitted ...
@Override
public Response toResponse(MyException exception)
{
// ... specific handling logic omitted ...
return Response.status(Status.BAD_REQUEST).entity(exception.getMessage()).build();
}
}
applicationContext.xml में सेम परिभाषा, के रूप में इस प्रकार है जो चूक गुंजाइश सिंगलटन करने के लिए (और एक स्पष्ट गुंजाइश विनिर्देशक जोड़ने व्यवहार बदलने के लिए प्रतीत नहीं होता है):
<bean id="myExceptionMapper" class="my.package.MyExceptionMapper" />
स्प्रिंग संदर्भ लोडर श्रोता और web.xml में SpringServlet विन्यास अनिवार्य रूप से बॉयलरप्लेट हैं, और सर्वलेट, लोड प्रारंभ और अन्य इंजेक्षन के साथ ठीक से संचालित होगा जब सेम defin गुण MyExceptionMapper के लिए इयनियन applicationContext.xml से टिप्पणी की गई है। लेकिन जब सेम परिभाषा applicationContext.xml में मौजूद है, मैं के प्रभाव को संदेश लॉग इन करें मिलती है:
SpringProviderFactory - Registering Spring bean, myExpectionMapper, of type my.package.MyExceptionMapper as a provider class
SpringProviderFactory - Registering Spring bean, myServiceController, of type my.package.MyServiceController as a root resource class
... other root resource classes loading ...
SpringServlet - Exception occurred when initialization
java.lang.RuntimeException: The scope of the component class my.package.MyExceptionMapper must be a singleton
at som.sun.jersey.core.spi.component.ioc.IoCProviderFactory.wrap(...)
मैं स्कैन संकुल पदानुक्रम में MyExceptionMapper रखने आरंभीकरण के दौरान SpringServlet द्वारा उठाया जा करने के लिए की कोशिश की है, और में एक अलग पैकेज पदानुक्रम, और परिणाम नहीं बदलते हैं।
इस पर किसी भी सहायता या मार्गदर्शन की सराहना की जाएगी।
आप की दोबारा जांच कर कि आप javax का उपयोग कर रहे हैं है। inject.Singleton और javax.inject एनोटेशन वसंत में सक्षम होते हैं? –