Hallo zusammen,
ich hoffe ihr könnt mir helfen. Ich versuche seit zwei Tagen das Problem zu lösen, aber es will einfach nicht gelöst werden. Zunächst mal die Problemstellung:
Umgebung:
JEE fähiger Client, EJB3, Glassfish, Eclipse
Aufgabe:
Ich möchte aus dem Client eine Methode im EJB Projekt aufrufen.
Problem:
Der Aufruf funktioniert. Wenn ich nur Strings, int's usw. übergebe oder erwarte, dann gehts. Es funktioniert nur mit einem eigenen Objekt (TransferObject) nicht. Bekomme den Fehler:
Sourcen:
MeinClient.java
UserBean.java
UserBeanRemote.java
VOUserIF.java
VOUser.java
Was mach eich hier falsch? Ich habe das Objekt Serializable gemacht. Das Objekt hat eine Schnittstelle für den Transfer. Was fehlt mir?
Vielen Dank im Voraus.
ich hoffe ihr könnt mir helfen. Ich versuche seit zwei Tagen das Problem zu lösen, aber es will einfach nicht gelöst werden. Zunächst mal die Problemstellung:
Umgebung:
JEE fähiger Client, EJB3, Glassfish, Eclipse
Aufgabe:
Ich möchte aus dem Client eine Methode im EJB Projekt aufrufen.
Problem:
Der Aufruf funktioniert. Wenn ich nur Strings, int's usw. übergebe oder erwarte, dann gehts. Es funktioniert nur mit einem eigenen Objekt (TransferObject) nicht. Bekomme den Fehler:
Java:
javax.ejb.EJBException: java.rmi.MarshalException: CORBA MARSHAL 1398079745 Maybe; nested exception is: org.omg.CORBA.MARSHAL: vmcid: SUN minor code: 257 completed: Maybe
Sourcen:
MeinClient.java
Java:
VOUserIF vo = null;
try {
Properties jndiProps = new Properties();
jndiProps.put("java.naming.factory.initial", "com.sun.enterprise.naming.impl.SerialInitContextFactory");
jndiProps.put("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
jndiProps.put("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
jndiProps.setProperty("org.omg.CORBA.ORBInitialHost", "127.0.0.1");
jndiProps.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
InitialContext ctx = new InitialContext(jndiProps);
UserBeanRemote bean = (UserBeanRemote) ctx.lookup("jndi/userbean");
vo = bean.createUser();
...
Java:
@Stateless(mappedName = "jndi/userbean")
public class UserBean implements UserBeanRemote {
...
@Override
public VOUserIF createUser() {
VOUserIf vo = new VOUser();
vo.setName("Test");
return vo;
}
}
Java:
@Remote
public interface UserBeanRemote {
public VOUserIF createUser();
public String sayHello(String name);
}
Java:
public interface VOUserIF extends Serializable {
/**
* Setter-Method for the attribute.
* @param username the username to set
*/
public void setUsername(String username);
/**
* Getter-Method for the attribute
* @return the username
*/
public String getUsername();
}
Java:
public interface VOUser implements VOUserIF, Serializable {
String name;
public VOUser() {
}
/**
* Setter-Method for the attribute.
* @param username the username to set
*/
public void setName(String name) {
this.name=name;
}
/**
* Getter-Method for the attribute
* @return the name
*/
public String getName() {
return name;
}
}
Was mach eich hier falsch? Ich habe das Objekt Serializable gemacht. Das Objekt hat eine Schnittstelle für den Transfer. Was fehlt mir?
Vielen Dank im Voraus.