ClassCastException nach JDNI Lockup

Diskutiere ClassCastException nach JDNI Lockup im Application Tier Bereich.
J

JogiBär

Hi Folks,

ich habe auf einem Glassfish-Server (3.1.2) zwei Projekte deployed. Ein EJB Projekt, welches für meine Logik und Datenhaltung zuständig sein soll und ein DynmicWebProject für die GUI.

Das EJB Projket habe ich im Build Path hinzugefügt.


Innerhalb des EJB Projektes habe ich eine SessionBean:

Java:
/**
 * Session Bean implementation class ClientManagementBean
 */
@Singleton
@LocalBean
public class ClientManagementBean{

	/**
     * Default constructor. 
     */
    public ClientManagementBean() {
        // TODO Auto-generated constructor stub
    }

 // internal stack
 	private List<UserClient> clients = new ArrayList<UserClient>();
...
mit entsprechendem Business-Interface definiert:
Java:
@Remote
public interface ClientManagementBeanRemote{

	public void addClient(UserClient client);
	...
Nun möchte ich im WebProjekt auf diese Klasse zugreifen. Hierzu habe ich folgenden Code geschrieben:
Java:
Properties props = new Properties();

			props.setProperty("java.naming.factory.initial",
					"com.sun.enterprise.naming.SerialInitContextFactory");

			props.setProperty("java.naming.factory.url.pkgs",
					"com.sun.enterprise.naming");

			props.setProperty("java.naming.factory.state",
					"com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");

			Context context = new InitialContext(props);

			Object initObj = context
					.lookup("ClientManagementBean");
			ClientManagementBean clientManager = (ClientManagementBean) initObj;
Der Lockup funktioniert auch und gibt mir ein entsprechendes Objekt zurück. Mein Problem besteht nun im nachfolgenden Cast:
Code:
ClientManagementBean clientManager = (ClientManagementBean) initObj;).
Dieser verursachte zunächst einmal "java.lang.NoClassDefFoundError: logic/mgntBeans/ClientManagementBean". Daraufhin habe ich das EJB project als EJB jar exportiert und im WebProjekt unter WEB-INF/lib/ hinzugefügt. Nun bekomme ich jedoch eine ClassCastException:

Code:
java.lang.ClassCastException: logic.mgntBeans.__EJB31_Generated__ClientManagementBean__Intf____Bean__ cannot be cast to logic.mgntBeans.ClientManagementBean
Nach einiger Recherche habe ich noch im Classpath die gf-client.jar hinzugefügt, was jedoch zu keiner Verbesserung führte.



Nun meine Fragen:
- Was habe ich falsch gemacht, das der Cast nicht funktioniert?
- Gibt es eine bessere Methode das ClassNotFound Problem zu umgehen. Aktuell muss ich bei jeder neuen vedion die jar im WebProjket aktuallisieren. Gibt es hierzu eine automatisierung?

Vielen Dank im Vorruas
JogiBär
 
J

Jogibär

Hi,

konnte das Problem lösen, indem ich ein EnterpriseApplicationProjekt angelegt habe und die beiden Projkete diesem zugeordnet habe.

Gruß
Jogibär
 
F

FArt

Hi,

konnte das Problem lösen, indem ich ein EnterpriseApplicationProjekt angelegt habe und die beiden Projkete diesem zugeordnet habe.

Gruß
Jogibär
Vermutlich hast du das Problem nur scheinbar gelöst, denn du kannst immer noch nicht erklären, wie hier eine ClassCastException entstehen kann.

Ohne mit Glassfish bisher viel gearbeitet zu haben, vermute ich dass es sich hier wie bei anderen AS verhält: abhängig vom Assembly und von der Konfiguration (WAR, EAR) wird das Classloading im AS anders realisiert. Genaus kann man nur herausfinden, wenn man weiß wie der AS dort arbeitet und wie deine Applikation genau gepackt ist.
 
Thema: 

ClassCastException nach JDNI Lockup

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben