Я пытаюсь передать не только объект на удаленный интерфейс EJB, но не Glassfish 3.1.1. Каким бы ни был первый объект, он пройдет нормально, второй объект всегда будет нулевым. Это из-за спецификаций rmi-iiop или это свойство?
Вот мои настройки свойств:
final Properties props = new Properties();
props.setProperty(InitialContext.STATE_FACTORIES,
"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");
props.setProperty("org.omg.CORBA.ORBInitialHost", "192.168.1.192");
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
// props.setProperty("com.sun.appserv.iiop.orbconnections","5");
// Increase ORB Response Timeout to 5 min instead of 30 min:
// props.setProperty("com.sun.corba.ee.transport.ORBTCPTimeouts",
// "500:90000:20");
props.setProperty(
"com.sun.corba.ee.transport.ORBWaitForResponseTimeout",
"300000");
try {
InitialContext ic=new InitialContext(props);
TestRemote remote=(TestRemote) ic.lookup("java:global/com.capmtech_test.ear-ear_ear_1.0-SNAPSHOT/test.ear-ejb-1.0-SNAPSHOT/Test!com.capmtech.TestRemote");
Person p = new Person();
p.setName("Smith");
Phone m = new Phone();
remote.test(p, m);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Вот EJB без гражданства:
@Stateless
public class Test implements TestRemote {
@EJB
private PersonFacadeLocal personFacade;
@Override
public void test(Person person, Phone mobile) {
Person p = person;
p.setMobile(mobile);
personFacade.create(p);
}
// Add business logic below. (Right-click in editor and choose
// "Insert Code > Add Business Method")
}
В этом случае мобильный телефон всегда будет иметь значение NULL, если я поменяю местами, aruguments person будет нулевым! Если бы IP был установлен на localhost, все было бы нормально.
Пожалуйста, помогите