2010-03-03 12 views
5

मैंने फेसलेट के साथ एक जेएसएफ 2 वेब एप्लिकेशन बनाया। जेएसएफ के लिए libs जहां टॉमकैट/lib पर संग्रहीत, इसे कई अनुप्रयोगों के बीच साझा करने के लिए। मैंने सोचा कि सर्वर कॉन्फ़िगरेशन से अधिक स्वतंत्र एप्लिकेशन प्राप्त करने के लिए, एप्लिकेशन के वेब-आईएनएफ/lib फ़ोल्डर के अंदर libs को स्टोर करना बेहतर होगा।प्रबंधित बीन्स टोमकैट में क्यों लोड नहीं होते हैं?

अब जब मैं ग्रहण के माध्यम से टोमकैट शुरू करता हूं, प्रबंधित सेम लोड होते हैं और काम करते हैं। लेकिन जब मैं सीधे टोमकैट शुरू करता/स्टैंडअलोन प्रबंधित बीन्स स्वचालित रूप से लोड नहीं होते हैं। मैंने

@ManagedBean 
@SessionScoped/@RequestScoped 

कक्षाओं को प्रबंधित बीन्स के रूप में घोषित करने के लिए एनोटेशन का उपयोग किया।

यह क्यों है? इसे ठीक करने के लिए मैं क्या कर सकता हूं?

मैं अभी तक किसी भी चेहरे-config.xml फ़ाइल का उपयोग नहीं करता हूं।

अग्रिम धन्यवाद।

संपादित:

javax.el.PropertyNotFoundException: /Artikel.xhtml @12,108 value="#{artikelBackingBean.nameFilterPattern}": Target Unreachable, identifier 'artikelBackingBean' resolved to null 
    at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:93) 
    at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95) 
    at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1008) 
    at javax.faces.component.UIInput.validate(UIInput.java:934) 
    at javax.faces.component.UIInput.executeValidate(UIInput.java:1189) 
    at javax.faces.component.UIInput.processValidators(UIInput.java:691) 
    at javax.faces.component.UIForm.processValidators(UIForm.java:243) 
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1080) 
    at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1180) 
    at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) 
    at java.lang.Thread.run(Thread.java:619) 
+0

क्या आपने 'टोमकैट/lib' से जेएसएफ libs को हटा दिया था? – BalusC

+0

हां, मैंने उन्हें हटा दिया। – c0d3x

+0

उह यहां कोई भी अंग्रेजी बोलता नहीं है। – Andrew

उत्तर

1

यह एक संकेत है कि webapp JSF 2. x के बजाय JSF 1.x उपयोग कर रहा है:

हो सकता है कि यह क्या है पर जा रहा देखने के लिए मदद करता है जेएसएफ 1.x का कॉन्फ़िगरेटर @ManagedBean एनोटेशन को पहचानता नहीं है जो faces-config.xml की आवश्यकता के बिना स्वचालित रूप से लोड/प्रारंभिक नहीं होता है।

मुझे जेएसएफ पुस्तकालयों के संस्करण में कुछ टकराव पर संदेह होगा। जेएसएफ जेएआर फाइलों के लिए पूरे क्लासपाथ को स्कैन करें और वास्तविक जेएसएफ संस्करण के लिए MANIFEST.MF फ़ाइल को निर्धारित करने के लिए कुछ ज़िप/रार टूल का उपयोग करें। कक्षा में Tomcat/lib, JRE/lib/* और Webapp/WEB-INF/lib शामिल हैं।

0

मैं सिर्फ इस मुद्दे था और पाया समाधान मेरी Maven युद्ध प्लगइन में सच विशेषता

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>${plugin-war-version}</version> 
      <configuration> 
       <archive> 
        <addMavenDescriptor>false</addMavenDescriptor> 
       </archive> 
       <archiveClasses>true</archiveClasses> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 

तो झूठी (गलत) को यह स्थापित करने मेरी समस्या हल हो जाती थी।

मैं भी इसके बारे में ब्लॉग: http://www.baselogic.com/blog/development/java-javaee-j2ee/propertynotfoundexception-target-unreachable-identifier-patientbean-resolved-to-null

3

JSF वेब-INF/कक्षाएं, जब बिल्ला के साथ शुरू में सेम लगता है: इस स्थान isn't कक्षाएं चलाते हैं।

एमवीएन टॉमकैट का उपयोग करें: रन-वार, मेरे लिए काम किया।

+0

आप कैसे जानते हैं कि ओपी मेवेन का उपयोग कर रहा है? न तो ओपी का वर्तमान प्रश्न और न ही ओपी के पहले से पूछे गए प्रश्नों से संकेत मिलता है कि वह मेवेन का उपयोग कर रहा है या कम से कम किसी भी तरह से परिचित है। – BalusC

+0

एक साधारण जेएसएफ प्रोजेक्ट मेमॉन टॉमकैट 7 प्लगइन के साथ टॉमकैट 7 का उपयोग करके चलाया जाता है: रन @ManagedBean एनोटेशन का पता लगाने और PropertyNotFound अपवाद फेंकने में असफल रहा है। लेकिन एमवीएन के साथ ठीक काम कर रहे हैं: tomcat7: रन-वार। –

0

META-INF/context.xml फ़ाइल को रूट रूट फ़ोल्डर में जोड़ें और run-war का उपयोग करें। आप फ़ाइल के अंदर एक खाली Context टैग डाल सकते हैं।

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

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