2012-12-18 212 views
0

我从独立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

+0

我想补充有关的serialVersionUID即QueryDetails和行一些更多的信息拥有的serialVersionUID = 1L和ResponseDetails有日食自动生成一个,如果这是造成任何问题? – SJunejo

回答

0

这是一个愚蠢的错误,我发现所有的对象都是按值调用任何RMI接口上的方法时传递。我必须有一些返回类型,这就是它所缺少的。所以我正在提高我的代码如下:

// Created a new Response Object by combing all the OUT parameters as one object 
// and updated the method on EJB to accept only IN paramters 
DoQueryResponse response = componentEJB.doQuery(query); 

希望这将帮助一些一(傻),我一样:)

+0

我刚刚验证过它,现在工作正常:) – SJunejo