2017-04-21 83 views
0

我有一個帶有遠程接口的EJB模塊和一個企業應用程序客戶端(帶有一個包含所有遠程EJB接口的庫)。當我從客戶端的遠程EJB調用任何業務方法時,一切正常,除非EJB必須返回一個對象數組。遠程EJB返回數組/集合

因此,傳輸一個字符串可以正常工作,但是當我試圖發送一串字符串時,它不會工作。

有關於此的任何想法?我是否需要像這樣創建一個Serializable對象?或什麼?:

public class ArrayStrings() implements Serializable{ 
     private String[] arrayS; 
     ... 
} 

我不知道如何在遠程ejb調用中傳遞數組。有任何想法嗎?

查找波紋管我的代碼:

@Stateless 
public class CategoryManagement extends AbstractFacade<Category> implements 
CategoryManagementRemote { 

@PersistenceContext(unitName = "On-lineSupermarketEJBPU") 
private EntityManager em; 

@Override 
protected EntityManager getEntityManager() { 
    return em; 
} 

public CategoryManagement() { 
    super(Category.class); 
} 

@Override 
public Category findCategoryByName (String name){ 

    try{ 
    Category c= (Category)em.createNamedQuery("Category.findByName").setParameter("name", name).getSingleResult(); 
    for (Product p: c.getProductCollection()){ 
     System.out.println(p.getName()); 
    } 
    return c; 
    }catch(NullPointerException e){}; 
    return null; 

} 

@Override 
public List<String> getProductCollectionGivenCategory (String name){ 
    Category c = findCategoryByName (name); 
    List<String> list=null; 
    for(Product p: c.getProductCollection()){ 
     list.add(p.getName()); 
    } 
    return list; 
} 

}

然後我的遠程接口(也就是在客戶端的類路徑的jar庫):

@Remote 
public interface CategoryManagementRemote { 
    Category findCategoryByName (String name); 
    List<String> getProductCollectionGivenCategory (String name); 
} 

最後我從CategoryManagementRemote接口調用一個方法來打印出客戶端中的字符串數組:

public static void main(String[] args){ 
    try{ 
    InitialContext c = new InitialContext(); 
    CategoryManagementRemote cm = (CategoryManagementRemote) 
    c.lookup("java:global/On-lineSupermarketEJB/CategoryManagement"); 
    List<String> listProducts= 
    cm.getProductCollectionGivenCategory("Diary"); 
    for (String p: listProducts){System.out.println(p);} 
    catch(Exception e){}; 
} 

順便說一句我沒有得到任何錯誤(我想嘗試讀取字符串列表時,try/catch捕獲異常)。但列表不打印出來。 (我沒有收到字符串列表在客戶端(在剛發送1個它的作品單個String)

+0

請出示實際的錯誤你得到和方法聲明來自遠程接口和實際的EJB –

+0

好吧,'getProductCollectionGivenCategory'似乎有一個會導致NullPointerException的錯誤...如果你記錄了捕獲到的異常而不是吞嚥它,那麼你可能已經看到了這個錯誤 –

+0

如果你是使用Eclipse鏈接,試着看看我的這個答案,我花了好幾天的時間試圖找出什麼是錯的:http://stackoverflow.com/questions/36112224/jpa-entity-is-not-correctly-passed-從ejb到表示層/ 37249863#37249863 – Leonardo

回答

0

解決了!對我來說,我殘疾人編織,現在可

+0

我還記得那些日子的挫折,試圖找出爲什麼事情沒有按預期工作!另一個建議是使用Hibernate作爲JPA實現。 – Leonardo