J
JogiBär
Gast
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:
mit entsprechendem Business-Interface definiert:
Nun möchte ich im WebProjekt auf diese Klasse zugreifen. Hierzu habe ich folgenden Code geschrieben:
Der Lockup funktioniert auch und gibt mir ein entsprechendes Objekt zurück. Mein Problem besteht nun im nachfolgenden Cast:
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:
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
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