# NamingException



## puck (4. Feb 2007)

Hallo zusammen,
ich habe ein kleines Problem. Und zwar möchte ich von meinem Servlet aus EJB-Session-Beans ansprechen. Die Beans sind vorhanden und auch schon getestet, die sollten funktionieren.
Nein was im Moment bei mir Konfusion erzeugt ist die Warnungen die Eclipse ausgibt, und daß mein Servlet dann auch wirklich zu einem Exception führt.
Lange Rede, kurzer Sinn, hier kommts:

```
private void createBank(String bankname, String blz)
  {
    try{
      InitialContext initialContext = new InitialContext();
    
      Object objAdminSession = initialContext.lookup("java:comp/env/AdminSession");
    }catch (NamingException ne) {}
    AdminSession myAdmin = (AdminSession) PortableRemoteObject.narrow(objAdminSession, AdminSession.class);
    
    myAdmin.erzeugeBank(blz, bankname);
    
  }
```

Als Warnung bekomme ich folgende Meldung: "Unhandlet Exception type NamingException"

Was muss ich hier noch verändern?

Gruss Christian


----------



## Gast (8. Feb 2007)

Was ist denn die genaue Exception?
Die Exception wird im Catch Block "weggedrückt", da {} statt
{ e.printStackTrace();} implementiert ist.

Gruss Martin


----------



## SlaterB (8. Feb 2007)

das Problem, ist, dass an anderer Stelle noch Exception auftreten können und diese bisher nicht durch try/ catch abgefangen werden,

in welcher Zeile, 8?
versuch mal diese ins try/ catch zu verschieben,
oder klicke das Warndreieck an und lasse Eclipse noch ein try/ catch erstellen


----------



## puck (14. Feb 2007)

Ja, ich habe das ganze jetzt etwas umgestellt:

```
private void createBank(String bankname, String blz)
  {
    Object objAdminSession = null;
    try{
      InitialContext initialContext = new InitialContext();
    
     objAdminSession = initialContext.lookup("java:comp/env/ejb/Admin");
    }catch (NamingException ne) { throw new IllegalStateException ("Zugriff auf initialContext fehlgeschlagen " + ne.toString()); }
    AdminSession myAdmin = (AdminSession) PortableRemoteObject.narrow(objAdminSession, AdminSession.class);
    
    myAdmin.erzeugeBank(blz, bankname);

    
  }
```

Bekomme jetzt aber ein Exception vom Typ "java.lang.ClassCastException".

Edit: das hat sich aber auch jetzt geklärt. Das RemoteInterface heist bei mir AdminRemote und es ist ja das Remote-Interface, das ich aufruf!


Gruss Christian


----------



## Guest (15. Feb 2007)

puck hat gesagt.:
			
		

> ```
> AdminSession myAdmin = (AdminSession) PortableRemoteObject.narrow(objAdminSession, AdminSession.class);
> ```


Das kann die ClassCastException auslösen. Das sollte man statt dessen so schreiben:

```
if (java.rmi.Remote.class.isAssignableFrom(AdminSession.class))
    AdminSession myAdmin = (AdminSession) PortableRemoteObject.narrow(objAdminSession, AdminSession.class);
```
Aber ich hab in meinem Programm gerade den Fall, dass mich das auch nicht vor einer ClassCastException schützt und keine Ahnung warum die trotzdem fliegt ...  :shock: 

Grüße, frsichfisch.


----------

