Soru Maven, modül tanımlamaya çalışırken projenin bağımlılığı olarak EJB'yi tanımıyor


Bugün, şirketimin sunucularını aynı sürüme yükseltmesi için yerel Glassfish sunucumu 3.1.1'e yükselttim. Web servis projemi yeni sunucuyla güzel oynamak için dönüştürmeye çalışıyorum ve bir yol bloğuna çarptım.

Kulağımın pom dosyasında, daha önce hem webapp hem de ejb bağımlılıklar olarak listelenmiştim. Webapp'un pompasında, ejb'i de bir bağımlılık olarak listeledim. Bu yapılandırmayı Glassfish 3.1.1'e dağıtmaya çalışırken bu hatayı aldım:

Dağıtım sırasında hata oluştu: Uygulamayı dağıtırken istisna [kulak]: Referansı çözemiyor Yerel ejb-ref name = name, Yerel 3.x arayüzü = interface, ejb-link = null, lookup =, mappedName =, jndi-name =, refType = Oturum, arayüz arayüzlü uygulamada 2 ejb var çünkü. Olası nedenlerden bazıları: 1. EJB fasulye sınıfı bir kulak kütüphanesinde (ya da kütüphaneyi tüm bileşen modüllerine görünür kılan diğer herhangi bir kütüphane mekanizmasıyla) paketlenmiştir; bu, tüm bileşen modüllerinin bu fasulye sınıfını dolaylı olarak içermesini sağlar. 2. EJB fasulye sınıfı, EJB'ye doğrudan veya dolaylı olarak Manifest, WEB-INF / lib aracılığıyla referans veren bir bileşen modülünde paketlenmiştir. EJB fasulye sınıfı sadece referans modüllerine değil, bildiren ejb modülüne paketlenmelidir. Referans modülleri sadece EJB arayüzlerini içermelidir. Lütfen sunucuya bakınız .... msg.seeServerLog

Esasen, EJB'nin iki farklı alanda bir bağımlılık olarak listelendiğim için, Glassfish 3.1.1'in hangi bağımlılığa bakacağını bilmediğine inanıyorum. Bu 2.1.1'de bir sorun değildi. Bu nedenle, kulaktaki bağımlılığı ortadan kaldırdım ve hala kulakların etkili pompasının bir parçası olacağını gördüm.

Ancak, şimdi kulak application.xml dosyasını oluşturduğunda, dosyadaki tüm ejb bilgilerini atlar. Uygulamayı şimdi çok iyi dağıtabilirim, ancak herhangi bir şeyi çalıştırmaya çalıştığımda ejbs ile ilgili NameNotFoundExceptions alıyorum.

Etiketle ejb modüllerini kulak pompasına manuel olarak eklemeyi denedim, ancak projeyi oluşturmaya çalıştığımda hata mesajını alıyorum:

Eser [ejb] projenin bağımlılığı değildir.

Bu, kulak için etkili pompasına baktığımda ejb'in bir bağımlılık olarak listelendiğini görmeme rağmen.

Glassfish 3.1.1'in daha katı kurallarına uygunken, application.xml dosyasını nasıl düzgün bir şekilde oluşturabilirim?

Daha fazla bilgiye ihtiyacın olursa yardım edeyim ve yardımın için teşekkürler!


18
2017-11-18 22:26


Menşei


Aslında bu problemle karşılaştım ve pompayı değiştirerek tamir edebildim. POM'lerinizi yayınlayabilir misiniz, böylece bir bakabilir ve neyin değişeceğini gösterebilirim? Şirkete duyarlı verilerse, paket isimlerini başka bir şeye değiştirin. - EpicOfChaos


Cevaplar:


Cevap oldukça basit bir şekilde sona ermişti ve kendimi bunun için biraz atıyorum. Webapp'un pom dosyasında, kapsam çizgisini ejb bağımlılığına eklemeliydim:

<dependency>
    <groupId>com.groupId</groupId>
    <artifactId>webservice-service-ejbs</artifactId>
    <version>${project.version}</version>
    <type>ejb</type>
    <scope>provided</scope>
</dependency>

Bununla birlikte, kulak pompasında ejb bağımlılığını koruyabildiğim için, application.xml düzgün bir şekilde üretildi ve 3.1.1 camböceği, aynı isimde birden fazla ejb sınıfı olduğunu düşünerek kafam karıştı.

EDIT: İşte ejb bağımlılığı kulak pompasında nasıl görünüyor

<dependency>
    <groupId>com.groupId</groupId>
    <artifactId>webservice-service-ejbs</artifactId>
    <type>ejb</type>
</dependency>

Bana yardım edenlere teşekkürler.


25
2017-11-21 18:30



ejb bağımlılığınızı kulak pom kodunda sağlayabilir misiniz? - curious
kesinlikle. geç cevap için özür dilerim, bir süre giriş yapmadınız. - lowell