konto usunięte

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

Witam

W Netebans 6.5.1 tworzę prosty projekt i podczas uruchomienia dostaję
Deploying application in domain failed; Error loading deployment descriptors for module [BitFaktura] -- Cannot resolve reference Unresolved Ejb-Ref faces.Companies/bank@jndi: @null@ejbs.CompanyLocal@Session@null


w Source Packages mam
ejbs.CompanyBean [@Stateless]
ejbs.CompanyLocal [@Local]
faces.Companies

w facex-config.xml
  <managed-bean>
<managed-bean-name>spis</managed-bean-name>
<managed-bean-class>faces.Companies</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>


i w faces.Companies
    @EJB
private CompanyLocal bank;


a to chyba powinno działać? w sieci widziałem że jakiś deskryptor trzeba uzupełnić

ale na tych stronach przykłady są podobne
Kwadrans w Bibliotece z JSF 1.2, EJB 3.0 i JPA
Element beanName w @EJB do rozróżnienia deklaracji ziaren EJB

Proszę o pomoc :)Paweł Ryznar edytował(a) ten post dnia 03.09.09 o godzinie 20:05

konto usunięte

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

nie wiem na jakim serwerze to odpalasz, ja robilem podobnie na Jboss, mialem plik aa.jar to o ile dobrze pamietam jboss tez po adnotacji @ejb nie widzial mojego komponentu, musialem podac mu atrybut name, o ile dobrze pamietam to jboss chcial @EJB(name="aa/nazwaEjb"). Zobacz sobie jaka nazwe serwer nadaje twoim ejb w jndi,

konto usunięte

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

serwer: wcześniej GlassFish V.2 teraz V2.1
Paweł Pietrasz:
zobacz sobie jaka nazwe serwer nadaje twoim ejb w jndi,
w "Admin Console" ? w "Jndi Tree Browsing" nic szczególnego nie zauważyłem, w gałęzi "ejb" mam tylko "ejb/mgmt/MEJB"

z ciekawości spradziłem jak jest z EntityManager
kod(w zarnie zarządzanym)
    @PersistenceContext(unitName = "FakturaPU")
EntityManager em;

i błąd
Deploying application in domain failed; Deployment Error -- Could not resolve a persistence unit corresponding to the persistence-context-ref-name [eu.ryznar.faces.Companies/em] in the scope of the module called
Paweł Ryznar edytował(a) ten post dnia 04.09.09 o godzinie 13:11

konto usunięte

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

WItam,

Niestety nie znam glassfisha poniewaz nigdy na nim nie pracowalem. Jezeli nie masz narzuconego serwera, to moze przepnij sie na jboss 5 ?

A zobacz w konsoli jak masz mozliwosc czy glassfish zarejestrowal ci ten datasource do ktorego chcesz sie odwolac ?Paweł Pietrasz edytował(a) ten post dnia 04.09.09 o godzinie 17:23

konto usunięte

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

odnośnie datasource, w "Admin Console" -> "Resources" -> "JDBC" -> "JDBC Resources" - mam [chyba] to co trzeba, w "Jndi Tree Browsing" też

z JBoss'em, poczekam spróbuję to w GlassFish'u rozwiązać, aczkolwiek nic mnie nie trzyma, ale nie chcę tak skakać bo i tak same problemy
tym bardziej że jestem początkujący w temacie, a tutoriale działają tylko w teorii z tego co widzę ;)
no chyba że o czymś nie wiem, i dodatkowo trzeba konfigurować serwer żeby @EJB działało poprawnie

wracajac do tego co pisałeś wcześniej
Paweł Pietrasz:
o ile dobrze pamietam to jboss chcial @EJB(name="aa/nazwaEjb")

czy to nie wpłynie negatywnie na przenośność kody między serwerami, np JBoss <-> GlassFish?
Piotr Stawiński

Piotr Stawiński
projektant/programis
ta, Narodowy Bank
Polski

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

Cześć
Ja pracuję na WebLogic 10.3, który jest bardzo podobny do GlassFish'a. W aplikacjach, które piszę wprowadziłem sobie plik persistence.xml w katalogu META-INF. Ma on postać:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">

<persistence-unit name="MyDataSourcePU" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/MyDataSrc</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver" />
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.WeblogicTransactionManagerLookup" />
<property name="hibernate.query.factory_class" value="org.hibernate.hql.ast.ASTQueryTranslatorFactory" />
<property name="hibernate.TransactionStrategy" value="org.hibernate.transaction.CMTTransactionFactory" />
<property name="hibernate.current_session_context_class" value="jta" />
<property name="javax.persistence.FlushModeType" value="javax.persistence.FlushModeType.COMMIT" />
</properties>
</persistence-unit>
</persistence>


JndiName mojego źródła danych to jdbc/MyDataSrc. Następnie w managedBean'ie (musi być dodany do faces-config.xml) odwołuję się do EntityManager'a w taki sposób:

public class MyBackingBean {
@PersistenceContext(unitName="MyDataSourcePU")
protected EntityManager em;
}

To MyDataSourcePU jest utożsamianie z persistence-unit z pliku persistence.xmlPiotr Stawiński edytował(a) ten post dnia 04.09.09 o godzinie 19:23

konto usunięte

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

utworzyłem projekt jeszcze raz i z @PersistenceContext gra [może jakaś literówka była]
nie zmienia to jednak faktu że @EJB powoduje błąd o którym pisałem w pierwszym poście
Piotr Stawiński

Piotr Stawiński
projektant/programis
ta, Narodowy Bank
Polski

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

Czy mógłbyś umieścić gdzieś cały projekt, który Ci nie działa? Może faktycznie jest gdzieś drobny niuans, którego zlokalizowanie jest trudne po samych opisach w tym wątku ;)

konto usunięte

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

oczywiście, tu jest archiwum z projektem
http://www24.zippyshare.com/v/28506467/file.html
Jacek Laskowski

Jacek Laskowski Senior Software
Developer

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

Cześć,

W Java EE 6 takie rozwiązanie ma prawo działać i tylko wtedy, więc wspomniany GlassFish może być pomocny, ale jedynie w wersji v3. W Java EE 5 musisz umieścić ziarno EJB do własnego projektu, a ziarno zarządzane do własnego. Spinasz oba EARem i...powinno działać.

Jacek
Notatnik Projektanta Java EE

konto usunięte

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

Najlepiej w NetBeansie utworzyć projekt Enterprise Application i on to już wszytsko pospina. Ja jak robiłem to sie wzorowałem własnie na przykładzie Jacka:) Z tym że w Twoim przykładzie Jacku beany encyjne trzymasz w osobnym projekcie javowym i podpinasz pod reszte. Mi to nie chciało działac, dopiero jak beany encyjne umieściłem w projekcie ejb. Ale mam jedno pytanie bo zauważyłem że kolega Piotr Stawiński jak i Jacek w swoim przykładzie używają entity managera w managed beanie po stronie klienta. I mam pytanie odnośnie tego - dlaczego?:P Nie znam się w zasadzie ale czy to nie jest troche "słabe"? I czy to nie przeczy pojęciu "cienki klient". Sorry za OT ale mnie to ciekawi i chciałbym znać odpowiedź.
Piotr Stawiński

Piotr Stawiński
projektant/programis
ta, Narodowy Bank
Polski

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

Andrzej Rumak:
... zauważyłem że kolega Piotr Stawiński jak i Jacek w swoim przykładzie używają entity managera w managed beanie po stronie klienta. I mam pytanie odnośnie tego - dlaczego?:P Nie znam się w zasadzie ale czy to nie jest troche "słabe"? I czy to nie przeczy pojęciu "cienki klient". Sorry za OT ale mnie to ciekawi i chciałbym znać odpowiedź.

Cześć
No pewnie, że jest to słabe ;) Podałem tylko i wyłącznie przykład, w którym można sprawdzić czy dostęp do zasobów bazy danych poprzez EntityManager'a działa poprawnie. W produkcyjnych projektach encje mam w oddzielnym projekcie, również warstwa www jest w osobnym oraz każdy biznesowy moduł, który można wydzielić z całości ;)Piotr Stawiński edytował(a) ten post dnia 05.09.09 o godzinie 14:22

konto usunięte

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

rzeczywiście, w osobnych projektach spiętych w ear działa :)
dziękuje wszystkim, a szczególnie Jackowi :)

konto usunięte

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

Ja też dziękuję za rozwianie wątpliwości:)

konto usunięte

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

Cześć,

Umieszczałeś ścieżkę do JAR-a z ziarnami encyjnymi w pliku META-INF/MANIFEST.MF w atrybucie Class-Path ?
Andrzej Rumak:
Najlepiej w NetBeansie utworzyć projekt Enterprise Application i on to już wszytsko pospina. Ja jak robiłem to sie wzorowałem własnie na przykładzie Jacka:) Z tym że w Twoim przykładzie Jacku beany encyjne trzymasz w osobnym projekcie javowym i podpinasz pod reszte. Mi to nie chciało działac, dopiero jak beany encyjne umieściłem w projekcie ejb. Ale mam jedno pytanie bo zauważyłem że kolega Piotr Stawiński jak i Jacek w swoim przykładzie używają entity managera w managed beanie po stronie klienta. I mam pytanie odnośnie tego - dlaczego?:P Nie znam się w zasadzie ale czy to nie jest troche "słabe"? I czy to nie przeczy pojęciu "cienki klient". Sorry za OT ale mnie to ciekawi i chciałbym znać odpowiedź.

konto usunięte

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

Hej,
Nie, nie umieszczałem, ale hmm dziwna sprawa bo teraz zrobiłem na szybko coś prostego i działa. Już nie pamiętam o co wtedy chodziło, ale widocznie coś przeoczyłem;)
Jacek Laskowski

Jacek Laskowski Senior Software
Developer

Temat: EJB i JSF (Managed Bean) - Cannot resolve reference ...

Andrzej Rumak:
Ale mam jedno pytanie bo zauważyłem że kolega Piotr Stawiński jak i Jacek w swoim przykładzie używają entity managera w managed beanie po stronie klienta. I mam pytanie odnośnie tego - dlaczego?:P Nie znam się w zasadzie ale czy to nie jest troche "słabe"? I czy to nie przeczy pojęciu "cienki klient".

Nigdy się nad tym nie zastanawiałem, ale nie widzę w tym nic niepoprawnego. No może poza zestawieniem środowiska wysokodostępnego - klastra. Załóżmy, że nie masz w ogóle EJB, czy aplikacja webowa bez EJB a z dostępem do bazki przez (uproszczenia) JPA to ZŁO? Nie. Zresztą właśnie rozwój JEE jest jakby potwierdzeniem, że nie ma w tym nic zdrożnego. W końcu możesz skorzystać z profilu webowego + JPA i będzie cacy (już teraz również). Kwestia gustu, możliwości architektonicznych i docelowych parametrów wydajnościowych. Jeśli jednak wrócić do tego pomysłu klastra, wtedy widziałbym dostęp zdalny z JSF (klaster webowy) do EJB+JPA (klaster biznesowy). Liczba serwerów w klastrze będzie zmienna i mam wrażenie, że taka konfiguracja (poza swoją ceną) będzie niezwykle wysokiej wydajności. Niewielkie serwery HTTP na przodzie uzupełnią docelową architekturę. Pytaj dalej. Dzięki takim pytaniom mam pomysły na kolejne wpisy na blogu i się kramik kręci :)

Jacek
Notatnik Projektanta Java EE

Następna dyskusja:

Forward z Managed Bean




Wyślij zaproszenie do