jBoss 4.2.3 サーバーにデプロイされた EJB3 サービスを、スタンドアロン Java プログラムから (jnp ルックアップを使用して) 呼び出しています。すべてのデータ オブジェクトをシリアル化しました。EJB のメソッドを正常に呼び出しましたが、クライアント側のオブジェクトからデータが失われています。Application Server 内で EJB 側をデバッグしたところ、オブジェクトにデータがあることがわかりました。
次のコードを使用して 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」、「rows」、および「responseDetails」にデータが取り込まれているのを確認できますが、クライアント側は同じ空の初期化オブジェクトのままです。
何か不足していますか?
--
シュネホ