3

JSF アプリケーションで RMI を実装する必要がありますが、これら 2 つのテクノロジを統合する方法に関するチュートリアルは見つかりませんでした。私は Java の経験がほとんどなく、JSF で開発された単純なアプリが 1 つしかないため、まだ初心者です。

役立つリンクについての知識がある場合は、共有してください。または、プロジェクトを正しく構造化/構成するために必要な主なポイントを説明できる場合は、ヒントを共有してください。

前もって感謝します。

アップデート:

これはプロジェクトの要件です:

「「求人検索サービス」と呼ばれる分散 Web アプリケーションを考えてみましょう。このアプリケーションは、過去 1 年間のすべての求人情報を記録し、その求人がすでに採用されているかどうかを記録する必要があります。ユーザーは、求人情報を投稿して検索できる必要があります。求人は、日付別またはカテゴリ別のいずれかで提供されます。

分散オブジェクト テクノロジを使用してこのシステムを実装する場合は、次の制約を考慮してください。

  1. リモート オブジェクトは、「ポスト ジョブ」システム機能を公開し、ユーザーがシステムにジョブを追加できるようにする必要があります。
  2. リモート オブジェクトは、「ジョブの検索」機能を公開する必要があります。これにより、ユーザーは日付またはカテゴリでジョブを検索できます。
  3. すべての求人には、役職、会社名、締め切り、連絡先の詳細、および職務仕様書が必要です。

あなたのタスク:

Java または .NET 固有のテクノロジを使用して、分散アプリケーションを設計、実装、およびテストします。(RMI または .NET Remoting テクノロジは必須です)"

4

1 に答える 1

3

これを行うことに謎はありません。JSF マネージド Bean は単なる Java クラスであるため、ここで必要なのはアプリケーションの設計のみであることを忘れないでください。これを行うには、次のような (非常に) 基本的なスケルトンを使用できます。

JSF プロジェクトの場合:

@ManagedBean
@RequestScoped
public class LoginBean {

    private String user;
    private String password;

    public LoginBean() {
    }

    //getters and setters...

    public String validateUser() {
        UserService userService = new UserService();
        if (userService.validateUser(user, password)) {
            return "success";
        }
        return "problems";
    }
}

public class UserService extends  {

    public UserService() {
    }

    public boolean validateUser(String user, String password) {
        //do the Java RMI client job here...
        boolean result = false;
        if (System.getSecurityManager() == null) {
            System.setSecurityManager(new SecurityManager());
        }
        try {
            String name = "UserServiceRMI";
            Registry registry = LocateRegistry.getRegistry(args[0]);
            UserServiceRMI userServiceRMI = (UserServiceRMI) registry.lookup(name);
            result = userServiceRMI.validateUser(user, password);
        } catch (Exception e) {
            //you can (and must) do a better error handling
            System.out.println("UserService exception:");
            e.printStackTrace();
        }
        return result;
    }
}

RMI サーバー プロジェクトで:

public interface UserRMIService extends java.rmi.Remote {
    boolean validateUser(String user, String password) throws java.rmi.RemoteException;
}

public class UserService implements UserRMIService {

    public UserService() {
        super();
    }

    public boolean validateUser(String user, String password) {
        //do the user validation here...
        //check against the database or another way you want/need
    }

    public static void main(String[] args) {
        if (System.getSecurityManager() == null) {
            System.setSecurityManager(new SecurityManager());
        }
        try {
            String name = "UserRMIService";
            UserRMIService engine = new UserService();
            UserRMIService stub =
                (UserRMIService) UnicastRemoteObject.exportObject(engine, 0);
            Registry registry = LocateRegistry.getRegistry();
            registry.rebind(name, stub);
            System.out.println("UserService bound");
        } catch (Exception e) {
            //you can (and must) do a better error handling
            System.out.println("UserService exception:");
            e.printStackTrace();
        }
    }
}
于 2012-12-08T14:30:37.400 に答える