# EJB - property nicht vorhanden



## FINF_AW_Alex (20. Okt 2014)

Hallo miteinander, ich bin werdender Fachinformatiker im Praktikum und stehe öfters mal vor so manchem Problem. Die Zeit ist meist knapp und in meinem Betrieb ist leider nur der Chef ein Programmierer aber wie chef´s so sind hat er selten Zeit. Desshalb frage ich mal hier ob mir jemand vielleicht helfen kann.

Ich arbeite mich gerade durch ein Buch von Galileo Press (Professionell entwickeln mit Java EE7) und versuche mir gerade den Umgang JavaPersistenceAPI beizubringen weil ich im Rahmen meines Praktikums eine JSF - Web-Aplikation mit Datenbankanbindung entwickeln soll.

zum Problem:

Ich habe eine EJB erstellt in der einfach nur ein EntityManager Objekt erstellt wird, es wird abgefragt ob eine Verbindung besteht und bei bestehender Verbindung der String "true" zurückgegeben.

Diesen String frage ich über eine EL-Expression in der index.xhtml ab.

Leider bekomme ich jedes mal die Fehlermeldung das die Klasse welche die Methode enhält nicht die entsprechende Property hat.

Hier mal die screens /code dazu ich hoffe mir kann jemand helfen. 

Gruß Alex


```
package com.SWE;

import javax.ejb.Stateful;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author schmack
 */
@Named
@Stateful
public class TestBean {
    
    @PersistenceContext
    private EntityManager em;
       
    public String test(){

        String s = "false";
        
        if ( em.isOpen()== true){
            s = "true";
        }
        
        em.close();
        
        return s;
    }
```



```
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        
        <h:form><p>
            <h:outputLabel for="con" value="connection established: "/>
            <h:inputText id="con" readonly="true" value="#{testBean.test}"/></p>
        </h:form>
        
    </h:body>
</html>
```


----------



## FINF_AW_Alex (20. Okt 2014)

Ich vermute ja das ich etwas mit den EJB Annotations nicht ganz richtig gemacht habe aber komme nicht drauf... :-/


----------



## stg (20. Okt 2014)

Objekt-Attribute, auf die du per EL zugreifen willst, sollten als private deklariert sein und über öffentliche getter/setter verfügen.

So in etwa sollte es laufen:


```
@Named
@Stateful
public class TestBean {
    
    @PersistenceContext
    private EntityManager em;
    
    private String test;
  
    // Initialisere test nach erfolgter ressorce injection
    @PostConstruct
    private void init() {
        test = em.isOpen() ? "true" : "false";
    }
     
    // Öffentlicher getter für test
    public String getTest() {
        return this.test;
    }     
}
```


----------



## FINF_AW_Alex (20. Okt 2014)

Hey stg !

Danke für die Antwort, das sieht auch super hübsch aus aber leider bekomme ich nach der von Dir vorgeschlagenen Änderung das hier an die Nase geknallt... :-(

Anhang anzeigen 6968


Kannst Du (oder jemand anderes) was damit was anfangen?

Grüße 

hier nochmal der Code:


```
package com.SWE;

import javax.annotation.PostConstruct;
import javax.ejb.Stateful;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author schmack
 */
@Named
@Stateful
public class TestBean {
    
    @PersistenceContext
    private EntityManager em;
       
    private String test;
    
    @PostConstruct
    private void init(){
     test = em.isOpen() ? "true" : "false" ;
     em.close();
    }
    
    public String getTest(){    
        return this.test;
    }
}
```


----------



## stg (20. Okt 2014)

Der Anhang funktioniert leider nicht .... ich hab das Code-Snippet von mir auch nicht getestet, sondern nur "so ungefähr" aus dem Kopf runtergeschrieben.

Schau doch noch mal nach dem Anhang und/oder poste den entsprechenden Stacktrace o.Ä...


----------



## FINF_AW_Alex (21. Okt 2014)

Oh, alles klar, hier nochmal ein Versuch...


----------



## FINF_AW_Alex (21. Okt 2014)

hier auch mal der Ausschnitt aus dem Buch:

Ich habe dann ja einfach nur den Rückgabewert von bool auf String ändern wollen...


----------

