Salve, ho da poco iniziato a lavorare per motivi universitari con EJB 3.X , uso Eclipse EE e Jboss 7,
ho riscontrato un problema e non riesco a venirne a capo nonostante le numerose ricerche.
Sto testando l'injection di un EJB all'interno di un altro. I bean stateless e implementati in progetti diversi.
Il primo ExampleSessionBean con relative interfacce Locale/Remota nel primo progetto.
codice:
package example;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
@Stateless
public class ExampleSessionBean implements ExampleSessionBeanRemote, ExampleSessionBeanLocal {
public String f(){
return "ciao";
}
}
Il secondo PonteSessionBean e relative interfacce nel secondo.
codice:
package ponte;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import example.ExampleSessionBeanLocal;
@Stateless
public class PonteSessionBean implements PonteSessionBeanLocal, PonteSessionBeanRemote {
@EJB
ExampleSessionBeanLocal sb;
public String f(){
return sb.f();
}
}
L'idea è tramite un client Java richiamare "Ponte", che richiama "ExampleSessionBean" che ritorna una stringa.
Il primo Bean viene deployato correttamente e funziona anche se invocato direttamente con il Client.
Il secondo Bean "Ponte" invece non riesco a deployarlo poichè non trova l'implementazione del primo bean nonostante l'abbia comunque inserito nel "build path".
Stessa cosa se provo l'injection da una Servlet.
C'è da dire che se il bean "ponte" lo inserisco nello stesso progetto del bean "example" sia sotto lo stesso package che in un packege diverso il deploy e l'injection funziona correttamente.
Quindi perchè non funziona se li metto in PROGETTI diversi?