2010-03-03 17 views
5

facelets ile bir JSF 2 web uygulaması oluşturdum. Tomcat/lib'de depolanan JSF için lib'ler, çeşitli uygulamalar arasında paylaşılacak. Uygulamanın sunucu konfigürasyonlarından daha bağımsız olmasını sağlamak için lib'leri uygulamanın WEB-INF/lib klasöründe saklamak daha iyi olurdu diye düşündüm.Neden Yönetilen Fasulye Tomcat'ta yüklenmemiş?

Tomcat'i tutulmaya başladığımda, yönetilen çekirdekler yüklenir ve çalışır. Ancak tomcat'i doğrudan/bağımsız olarak başlattığımda, yönetilen çekirdekler otomatik olarak yüklenmez. Sınıfları yönetilen fasulye olarak bildirmek için

ek açıklamaları kullandım.

Bu neden? Düzeltmek için ne yapabilirim?

Henüz bir face-config.xml dosyası kullanmıyorum.

Şimdiden teşekkürler.

düzenlendi:

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

JSF lib'lerini 'Tomcat/lib''den kaldırdınız mı? – BalusC

+0

Evet, onları kaldırdım. – c0d3x

+0

Ugh, burada kimse İngilizce bilmiyor. – Andrew

cevap

1

Bu Webapp yerine JSF 2.x JSF 1.x kullanan bir işaretidir:

Belki bu ne oluyor görmek için yardımcı olur JSF 1.x'in yapılandırıcısı, faces-config.xml'a gerek olmadan otomatik olarak yüklenmediği/başlatılmadığı için @ManagedBean ek açıklamalarını tanımıyor.

Kullanılan JSF kitaplıklarının sürümünde bir çarpışma olduğundan şüphelenirim. JSF JAR dosyaları için tüm sınıf yolunu tarayın ve gerçek JSF sürümü için dahil edilen MANIFEST.MF dosyasını belirlemek için bazı zip/rar aracını kullanın. Sınıf yolu Tomcat/lib, JRE/lib/* ve Webapp/WEB-INF/lib içerir.

0

Sadece bu sorunu vardı ve çözüm Yani yanlış (false) için bu ayar

 <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> 

sorunumu çözdü benim maven-savaş eklentisinde gerçek niteliği olduğunu gördük.

Ben de bu konuyu blogged: http://www.baselogic.com/blog/development/java-javaee-j2ee/propertynotfoundexception-target-unreachable-identifier-patientbean-resolved-to-null

3

jsf tomcat ile başladı WEB-INF/sınıfları, fasulyeleri bulmak: Bu konum isn't sınıfları çalıştırın.

mvn tomcat'i kullanın: run-war, benim için çalıştı.

+0

OP'nin Maven'i kullandığını nereden biliyorsunuz? Ne OP'nin mevcut sorusu ne de OP'nin daha önce sorduğu sorulardan herhangi biri Maven'i kullandığını veya en azından bir şekilde onu aşina olduğunu gösterir. – BalusC

+0

Basit bir JSF projesi, Tomcat7 kullanılarak MAven Tomcat 7 eklentisi ile çalıştırılır: run @ManagedBean ek açıklamasını algılayıp PropertyNotFound istisnasını atar. Ama mvn: tomcat7: run-war ile gayet iyi çalışıyor. –

0

Web kök klasörüne META-INF/context.xml dosyasını ekleyin ve run-war'u kullanın. Dosyanın içine boş bir Context etiketi koyabilirsiniz.

İlgili konular