質問

私はJSF&Iは、あまりにもEJBモジュールを持って使用して行われたWebプロジェクトを持っています。 私は形でいくつかのデータを入力します&私のセッションBeanを経由してDBにそれらのデータを保存しようとします。

以下のステップのシーケンスである。

1)ユーザーは、フォームで画面を開きます
2)彼は、データとフォームフィールドを埋め
3)ボタン
保存にヒット 4)(エンティティBeanを含む。以下に示す)。

すべて入力された値豆のキャプチャを管理&ArrayListに追加します
for(String tagName : formTagNames){ // For all the tag names in the FORM
 String value = request.getParameter(tagName); // Get the value of the field
 myArrayList.add(new DynamicForm(tagName, value)); // Create a bean & add to list
}

5)を、のmyArrayList の永続性のためのEJBモジュールに送られます。

(私も正しくマッピングを行っています)
@EJB(name="DynamicFormFacadeLocal", mappedName="DynamicFormFacade/local")
private static DynamicFormFacadeLocal dynamicFormFacadeLocal;  

// Send it to EJB module for persistence
dynamicFormFacadeLocal.addDynamicFormFields(myArrayList);  

6)私はセッションBeanに達するとの myArrayList

を反復処理してみてください
public Integer addDynamicFormFields(ArrayList<DynamicForm> formDetailsList) {
 if(formDetailsList == null || formDetailsList.isEmpty()) return 0;

 setupResources(); // Setting up all necessary connections & stuff
 int count = 0;
 try{
     entityTransaction.begin();
     for(DynamicForm form : formDetailsList){
  entityManager.persist(form);
  count++;
     }
     entityTransaction.commit();
 }
 catch(Exception e){
     e.printStackTrace();
     entityTransaction.rollback();
 }
 finally{
     cleanupResources(); // Cleanup all connections & resources
 }

 return count;
    }

7)しかし、それは私にClassCastExceptionが与え&Iは、理由を理解していません..! :(

18:17:42,210 INFO  [org.hibernate.impl.SessionFactoryImpl] building session factory
18:17:42,214 INFO  [org.hibernate.impl.SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI name configured
18:17:42,219 ERROR [STDERR] java.lang.ClassCastException: com.test.dynamiform.beans.entity.DynamicForm cannot be cast to com.test.dynamiform.beans.entity.DynamicForm
18:17:42,219 ERROR [STDERR]  at com.test.dynamiform.beans.session.DynamicFormFacade.addDynamicFormFields(DynamicFormFacade.java:32)
18:17:42,219 ERROR [STDERR]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
18:17:42,219 ERROR [STDERR]  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
18:17:42,219 ERROR [STDERR]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
18:17:42,219 ERROR [STDERR]  at java.lang.reflect.Method.invoke(Unknown Source)
18:17:42,220 ERROR [STDERR]  at org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122)
.... etc
缶は、誰かがこの1で私を助けてください.. ???

:私は...オブジェクトの同じタイプを送信&反復てるように私は完全にここに迷ってしまいました

事前に感謝します。
Asela。

役に立ちましたか?

解決

あなたは「クラスローダー地獄」と呼ばれているものにしています。

オブジェクトのタイプも、それをロードしたクラスローダのクラスに依存します。

あなたのサーバーに展開、そのクラスの2つのコピー、おそらくWeb Appで1とEJBの1を持っていますし、コードの異なるビットが異なるクラスローダからのクラスを拾っている。

あなたのWebアプリケーションとEJBが同じ場所からshaedクラスをロードするように、物事を整理、Webアプリケーションから1つを削除 - 多くの場合、EJBでクラスを持つが最善の策である。

しかし、私はきれいかもしれシンプルなDTOクラスを使用して、フォームオブジェクトについて「知っている」EJBの気に入らない場合は、むしろ迷惑ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top