2

これは私が作ったばかげたエラーかもしれませんが、ここにあります:

XXEarというエンタープライズアプリケーションプロジェクト(Eclipse Indigoを使用しています)を作成しました。次に、XXEJBというEJBプロジェクトを作成し、EARメンバーシップ(XXEar)に追加しました。また、XXEJBClientとXXEJBClient.jarを作成します。このようにして、XXEJBのドメインと対話する必要があるたびに、XXEJBClient.jarを他のプロジェクトに提供するだけでよいXXEJBClientで定義されたインターフェイスを使用します。そして最後に、XXWebという動的なWebプロジェクトを作成しました。

つまり、XXWebには、JSPとサーブレットがあり、.earをGlassfishにデプロイし、データベースに情報を追加するXXEJBClientのインターフェイスを使用して、XXEJBのドメインにアクセスできます。このような:

XXEJBClientで

@Local
public interface UserHandlerLocal {

public void addUser(String name, int NPC);

}

これは機能しますが、「User」オブジェクトを取得したい場合、エラーが発生しません

@Local
public interface UserHandlerLocal {

public void addUser(String name, int NPC);

public User getUser(int NPC);

}

プロジェクトの設定に何か足りないものがありますか?


編集:この作業を行った1つのことは、XXEJBClientとXXEJBClient.jarを作成せずにXXEJBのみを作成することでした。ドメインクラスを作成した後、XXEJBClientを作成し、主要な操作をXXWebにファサードすることができました。

残念ながら、ドメインに新しいクラスを追加したい場合、XXEJBClient.jarを更新する方法がわかりません。

4

1 に答える 1

0

XXEJBClient.jarにUser.classとUserHandlerLocal.classの両方が含まれているかどうかを確認します。

これらの2つのクラスファイルは、クライアント側とサーバー側の両方で確認する必要があります。

また、両方のクラスファイルは完全に同じである必要があります(最初にコンパイルしてからコピーします)。何らかの理由で同じJavaファイルを2回(サーバー側で1回、クライアント側で1回)コンパイルする場合は、シリアルバージョンIDをJavaクラスに追加する必要があります。

private static final long serialVersionUID = 1;
于 2013-03-22T18:49:53.373 に答える