我從獨立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