1

EAR (myear.ear) ファイルをパッケージ化し、JBoss EAP 6 (つまり、JBoss 7 :)) にデプロイしました。次のようになります。

lib/ 
  my-common.jar (Custom library containing common classes used by both the WAR and BIZ)
  --- (other libraries used by both WAR and BIZ) ---
META-INF/
    jboss-deployment-structure.xml (specifies just <ear-subdeployments-isolated>false</ear-subdeployments-isolated> )
my-biz.jar (EJB Module)
    META-INF/
        beans.xml
        MANIFEST.MF
    -- java classes -- 
my-war.war (WAR Module)
    WEB-INF/
        beans.xml
        lib/ (empty! I made a skinny war)
    META-INF/
        MANIFEST.MF
    resources/
    -- java classes --

my-war.warのクラスからメソッドを呼び出すクラスがありmy-common.jarます。何が起こるかは次のとおりです。

public class MyWarMember implements Serializable{//my-war.war

  public void foo(){
    MyCommonMember.deepCopy(this);
  }
}
---------------------------------------------------------------------
public class MyCommonMember{//my-common.jar
  public static Object deepCopy(Serializable obj){

    ObjectOutputStream oos .....
    ...
    oos.writeObject(obj);
    ....
    ObjectInputStream ois ....;
    ....
    ois.readObject(); 
  }
}

への呼び出しois.readObject();は、MyWarMember に対して ClassNotFoundException をスローします。

java.lang.ClassNotFoundException: my.war.MyWarMember from [Module "deployment.myear.ear:main" from Service Module Loader]

これをどのように解決しますか?ありがとう!

4

2 に答える 2

1

my-war.waryourと your common jarの間に循環依存関係を作成しましたmy-common.jar

  1. あなたからMyWarMember呼び出しています

    MyCommonMember.deepCopy(this);- libにjarを追加したので、これは機能します

  2. MyCommomMemberやってるから

    public static Object deepCopy(Serializable obj){- クラスが見つからないという例外が発生MyWarMemberしましたmy-war.war

解決策: 循環依存を削除します。

それが役に立てば幸い。

于 2012-11-15T11:15:02.753 に答える
0

複数の分離されたクラスローダーの問題でしょうか。例外から、問題箇所はdeployment.myear.ear:main見えないところだと文句を言うMyWarMember。これは、war モジュールが EAR の lib フォルダーにないためです。

注:間接的な循環依存関係があり、型指定されていないクラスを処理するものをmy-war.war使用しますが、シリアル化のために実際の型を知る必要があります。my-common.jarmy-war.war

于 2012-11-15T10:30:10.567 に答える