2012-12-18 131 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