【问题标题】:JSF with RMI tutorialJSF 与 RMI 教程
【发布时间】:2012-11-26 12:26:24
【问题描述】:

我必须用 JSF 应用程序实现 RMI,但我还没有找到任何关于如何集成这两种技术的教程。我对 Java 的经验很少,只有一个用 JSF 开发的简单应用程序,所以我还是个初学者。

如果您知道任何可能有用的链接,请分享或提示,如果您能解释我为了正确构建/配置我的项目而必须复习的要点。

提前谢谢你。

更新:

这是项目的要求:

“考虑一个名为“求职服务”的分布式 Web 应用程序。该应用程序应记录过去一年中的所有工作机会,说明该工作是否已被录用。用户应该能够发布工作机会并按日期或类别搜索工作机会。

在使用分布式对象技术实施此系统时,请考虑以下限制:

  1. 远程对象应公开“发布作业”系统功能,让用户向系统添加作业。
  2. 远程对象应公开“搜索工作”功能,允许用户按日期或类别搜索工作。
  3. 所有工作机会都必须包含职位名称、公司名称、截止日期、联系方式和工作规范。

你的任务:

使用 Java 或 .NET 特定技术设计、实施和测试分布式应用程序。 (RMI 或 .NET Remoting 技术是强制性的)"

【问题讨论】:

  • 最好解释一下为什么你需要使用 RMI 来连接一个 Web 应用程序(JSF 只是一个 Web 框架),或者更好:发布实际问题并所以人们会帮助你得到答案。
  • 我必须将 Web 应用程序作为集成 RMI 的学校项目。我会将要求添加到我的帖子中。
  • RMI 和 JSF 作为独立的技术彼此之间没有任何依赖关系(我知道)。因此,你必须让他们两个分开工作。你让 RMI 位工作了吗?

标签: java jsf web-applications rmi


【解决方案1】:

这样做并不神秘。请记住,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-05-02
    • 1970-01-01
    • 2015-02-22
    • 2010-09-15
    • 2011-07-12
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多