NameNotFoundException: JSF->EJB3

acronym

Mitglied
Hallo!

Ich möchte von einer JSF-Seite aus auf eine Session Ejb3 zugreifen und Daten in eine DB legen. Benutze JBoss 4.2, bekomme folgende Fehlermeldung:

javax.servlet.ServletException: #{navigationBean.getAlleRechner}: javax.naming.NameNotFoundException: DBfuellBean not bound
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

Als ich mal, warum auch immer, zugreifen durfte gab's die Meldung, dass der injizierte EntityManager keine Zugriff hat...
...

Ich mache einen JNDI lookup in der JSF-Seite, müsste korrekt sein. Wenn jemand eine Idee hat würde ich mich freuen davon zu erfahren icon_smile.gif

Grüße
Holger
 
Die Exceptions sagt dir, dass der Name der Komponente die du benutzen möchtest nicht bekannt ist. Mehr kann man nur unken... also ohne Code zu sehen.

Gruß
Ollie
 
Moin!
hier mal Code.
Das ist die JSF-Seite auf der die Methode aufgerufen wird.
Code:
<h:outputLabel for="monrechner" value="Auswahl eines Rechners zum Monitoring: " />
						<h:selectOneMenu id="monrechner" value="#{newControlBean.rechner}">
						 <f:selectItems value="#{newControlBean.alleRechner}"/> 
						</h:selectOneMenu>

Die dazugehörige BackingBean

Code:
public class NavigationBean {
	
	private String name; //session an user binden, wird beim login vergeben, später. 
	
	public NavigationBean(){
		
	}
		
	public String getAlleRechner() throws NamingException {	
			
			
			String[] string1 = {"a","b","c"};
			InitialContext ctx = new InitialContext();
			FuellenLocal dbfull = (FuellenLocal) ctx.
			lookup("FuellLocal"); //"DBfuellBean" beide Namen im JNDI
			
			dbfull.erzeugeEntity("bla", string1 , "stop",
					TimeHandler.getTime());
			
			ctx.close();			
			
		return "success";
	}

SessionBean:
Code:
@Stateful(name="DBfuellBean")
@Local(FuellenLocal.class)
//@LocalBinding(jndiBinding="FuellBean")
public class DBfuellenBean implements FuellenLocal, SessionSynchronization  {
	
		
	@PersistenceContext(unitName = "controltest2")
	private EntityManager em;
	
	//@TransactionAttribute(value=TransactionAttributeType.REQUIRES_NEW)
	public void erzeugeEntity (String rechner, String[] control_Process, String policy,
			Timestamp time){
		EntityControl entity = new EntityControl();
		entity.setRechnername(rechner);
		entity.setNewProcesses(control_Process.toString());
		entity.setPolicy(policy);
		entity.setTimestamp(time);
		
		em.persist(entity);
		em.close();
		
	}

Der Zugriff hat auch schon mal geklappt, allerdings kam dann der Hinweis, dass der injizierte PersistenceManager keinen Zugriff hat...

Grüße
 
Zurück