2009-08-25 16 views
13

JBoss 4.3-yığınında paketlenmiş savaşlar, kavanozlar ve yapılandırma dosyaları (.properties files) içeren bir kulağın dağıtılmasında sorun yaşıyorum. İşte benim kulak yapısı şöyledir: Ben jboss-app.xml aşağıdaki gelmişJBoss: EAR'daki WAR dosyası sınıf yolunda JAR kitaplığını bulamıyor

+app.ear 
    +lib 
    *.jar libraries that the war's use 
    +classes 
     *.properties and other configuration files 
    +META-INF 
    application.xml 
    jbos-app.xml 
    app.war 
    app2.war 
    appn.war 

:

<jboss-app> 
    <jmx-name>app.startup.JbossStartUpServer:service=JbossStartUpService</jmx-name> 
</jboss-app>  

Benim Application.xml şöyle görünür:

<application id="app_id"> 
    <display-name>App>/display-name> 
    <description>TheApp>/description> 
<!-- 
    <module id="core"> 
    <java>lib/core.jar</java> 
    </module> 

    <module id="tag"> 
    <java>lib/tag.jar</java> 
    </module> 
--> 
    <module id="app"> 
    <web> 
     <web-uri>app.war</web-uri> 
     <context-root>/</context-root> 
    </web> 
    </module> 

    <module id="app2"> 
    <web> 
     <web-uri>app2.war</web-uri> 
     <context-root>/app2</context-root> 
    </web> 
    </module> 

    <module id="appn"> 
    <web> 
     <web-uri>appn.war</web-uri> 
     <context-root>/appn</context-root> 
    </web> 
    </module> 

    <security-role id="secRole"> 
    <description>users</description> 
    <role-name id="appRoleName">users</role-name> 
    </security-role> 

    <library-directory>lib</library-directory> 

</application> 

Temelde, üzerine Kulağı dağıtarak, savaşlarımdan birinin core.jar dosyasında (java.lang.NoClassDefFoundErro r) bir sınıf bulamadığı bir sorunla karşılaşıyorum. Bunun sebebi, savaşın lib klasör/sınıf yolunda olsa bile, bu kütüphaneyi bulamamasıdır. İlk parti kütüphaneleri (core.jar ve tag.jar), (onlar ki, ben yine umut lib/classes yılında, şimdi, bulunduğu özellikler dosyalar artık bulunabilir aniden eklemek için ilk iki modülünü uncomment çalışırsanız onlar sınıf yükleyicisi tarafından alınırlar. İdeal olarak, dersleri kendi dizinine koymak ve onu ayrı olarak sınıf yoluna eklemek isterdim, ama şimdilik sadece bu işi yapmaya çalışıyorum).

el hiçbir başarının, savaşın manifest.mf dosyaya core.jar ekleyerek jboss-web.deployer altında jboss-service.xml dosyasında true UseJBossWebLoader değişen ve yukarıdaki değişik kombinasyonları dahil olmak üzere bazı diğer şeyleri çalıştık. Ya sınıf yolundan (lib klasörü) classes dizinini kaybederim ve özellik dosyalarımdan hiçbiri kaldırılmaz veya savaş uygun sınıftan jar'dan erişemez. Bence yanlış olan bir konfigürasyon olmalı ve JBoss'un EAR dağıtımlarını ve sınıf yüklemesini okumaya çalışırken, mevcut kurulumuma uyarlayamıyorum.

Her türlü öneri çok takdir edilecektir.
Raible Designs JBoss ClassLoader Logic

Bunlar baktım sitelerin sadece birkaçı: İşte

baktığım edilmiş bazı siteleri bulunmaktadır. Sorunlar, projenin kurulumundan da kaynaklanabilir, çünkü bu, bir weblojiden Jboss'a (bir dereceye kadar) aktarılan büyük bir proje. Öyleyse, işe yarayacak bir şey varsa, ancak, bazı kod/proje yapılandırması ile ilgili bir sorun olabilir. Maalesef henüz JBoss ile ilgili bir problemin mi yoksa projeyle ilgili bir sorun mu olduğunu söyleyebilirim. application.xml yılında

cevap

10

<library-directory> etiketi bir JavaEE5 özelliğidir ve JBoss 4.3 (evet, EJB3 yapabilir, ancak yalnızca kısmi destek var) tamamen JavaEE5 uyumlu olduğunu düşünmüyorum.

Yani açıkça beyan JAR dosyalarını kullanarak geri dönmek gerekir: özellikleriniz dosyalar gelince

<module> 
    <java>lib/core.jar</java> 
</module> 

, size örneğin bu yüzden bir java modül olarak konum dizin eklemeniz gerekir :

<module> 
    <java>lib/classes</java> 
</module> 
+0

Bu sorunumu çözdü! Çok teşekkürler! Yine de bir takip sorusu sormak istiyorum: eğer bu modülleri application.xml dosyasına eklerseniz, bu, wars 'manifest.mf dosyalarındaki class-path özelliğine ihtiyacım olmadığı anlamına mı geliyor?Ya da jboss-web.deployer içinde UseJBossWebLoader özniteliğini true olarak ayarladığım halde bu durum geçerli midir? – Mike

+0

Açık sorun hakkında emin değilim, kendim denemedim, her zaman varsayılan düzleştirilmiş classloader güveniyor. Biçimlendirmeye gelince, çekirdek/ön etiketleri kullanmayın, çok iyi çalışmıyorlar. Düzenleyicideki biçimlendirme simgelerini kullanın. – skaffman