我从独立Java程序(使用jnp查找)调用我的jBoss 4.2.3服务器中部署的EJB3服务。我已将所有数据对象序列化。我已经成功地调用了EJB的方法,但是我正在丢失客户端对象的数据。我在应用程序服务器中攻击了EJB端,我可以看到我的对象中有数据。EJB3方法调用返回空对象
我打电话给我的EJB使用下面的代码;
public void doStuff() {
// Component and its JNDI
ResourceProviderServiceBeanRemote componentEJB;
String JNDI_NAME_REMOTE = "ResourceProviderService/ResourceProviderServiceBean/remote";
// Setup Environment
Hashtable environment = new Hashtable();
environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
environment.put(Context.PROVIDER_URL, "jnp://127.0.0.1:1099"); // remote machine IP
Context context = null;
try {
context = new InitialContext(environment);
Object factoryObj = context.lookup(JNDI_NAME_REMOTE); //ejb-name
componentEJB = (ResourceProviderServiceBeanRemote) factoryObj;
UserContextCallBack userContext = new UserContextCallBackImpl(new UserDetails("username", "password", ""));
componentEJB.setUserContextCallBack(userContext);
QueryDetails query = new QueryDetails();
query.setName("anything");
List<String> cols = new ArrayList<String>();
List<Row> rows = new ArrayList<Row>();
ResponseDetails responseDetails = new ResponseDetails();
componentEJB.doQuery(query, cols, rows, responseDetails);
System.out.println(responseDetails);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
注:我可以看到填入“的cols”的数据,“行”,并在服务器端,但客户端“responseDetails”保持不变空INITIALISE对象。
我错过了什么?
-
SJunejo
我想补充有关的serialVersionUID即QueryDetails和行一些更多的信息拥有的serialVersionUID = 1L和ResponseDetails有日食自动生成一个,如果这是造成任何问题? – SJunejo