私は、リモートインタフェースを持つ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);
}
そして最後にI CategoryManagementRemoteインターフェイスのメソッドを呼び出して、クライアントのString配列を出力するだけです。
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つの文字列を送信するとき、それは動作します)クライアントに
機能するようになりましたあなたが得る実際のエラーを表示してください。リモートインタフェースと実際のEJBからのメソッド宣言 –
'getProductCollectionGivenCategory'はNullPointerExceptionを引き起こすバグを持っているようです...捕まえられた例外をそれを飲み込むのではなくログに記録した場合、それを見たことがあります。 –
Eclipseのリンクを使って、この私の答えを見てみよう、私は何が間違っていたのかを調べるのに何日も費やしました:http://stackoverflow.com/questions/36112224/jpa-entity-is-not-correctly-passed- from-ejb-to-presentation-tier/37249863#37249863 – Leonardo