【问题标题】:EJB + JSP: Cannot create the Remote Object from the Home interfaceEJB + JSP:无法从 Home 界面创建远程对象
【发布时间】:2011-03-05 15:52:10
【问题描述】:

我是 J2EE/EJB 领域的新手,我正在学习一些基本示例。我已经实现了一个非常简单的类,它总结了 2 个数字。我有家庭和远程接口以及 Enterprise Bean(无状态)本身。

Adder.java //Remote interface
AdderHome.java //Home interface
AdderBean.java //The EJB class

在将其作为 EJB 应用程序进行测试时,一切正常。但是现在,我想将其作为 JSP 页面进行测试,但在从主界面实例化远程接口时出现错误(实际上没有输出)。

及时:我将 J2EE 1.4 与 JBoss 4 一起使用。

这是 JSP 页面的代码。它应该只打印一行。

<%@page import="javax.naming.*" %>
<%@page import="javax.rmi.PortableRemoteObject" %>
<%@page import="java.util.Properties" %>
<%@page import="com.lucasmariano.*" %>

<%
        //Preparing the properting to be put in the InitialContext
        Properties properties = new Properties();
        properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        properties.put(Context.PROVIDER_URL, "localhost:1099");

        try {
            //Get an Initial Context               
            InitialContext jndiContext = new InitialContext(properties);
            System.out.println("got context");               

            //get a reference to the bean
            Object ref = jndiContext.lookup("Adder");
            System.out.println("got reference");


            //Get a reference to this to the bean's home interface
            AdderHome home = (AdderHome) PortableRemoteObject.narrow(ref, AdderHome.class);
            out.println("GETTING OBJECT <BR />");

            //create an Adder object from the Home interface

            //######  HERE IS THE PROBLEM!!!  #######
            Adder adder = home.create();
            out.println("ADDER OBJECT CREATED <BR />");
            out.println("2 + 5 = " + adder.add(2,5));

        }catch(Exception e ){
            System.out.println(e.toString());
        }
  %>

我需要为我的 web.xml 添加一些新值吗?

【问题讨论】:

    标签: java ejb rmi remoteobject


    【解决方案1】:

    我同意达菲莫的观点。你在做什么是错的。

    EJB 是一项伟大的技术,但 EJB2 是彻头彻尾的邪恶。它是在象牙塔中设计的,只有一个目标:让开发人员的生活尽可能困难。

    现在没有理由开始使用 EJB2。学习 EJB2 的唯一原因是您必须维护一些用 EJB2 编写的旧遗留应用程序(但我建议找另一份工作)。

    尽管只有一个更高的版本,但 EJB3 是完全不同的东西。它简单、轻量、非常合乎逻辑,并且得到了很多社区反馈。但即使是 EJB3 也相当老了。当前版本是 EJB3.1,可与 Glassfish v3.1、JBoss AS 6 或 Resin 4 一起使用(使用 Resin,您将获得 EJB3.1 lite+)。

    【讨论】:

    • 确实,我正在关注 2002 年出版的一本书。但我没想到事情会以这种方式完全改变(即使是关于编程语言,我知道它在时间)。我将寻找一些关于 EJB3 和 EJB3.1 的材料以进行更新。非常感谢。
    【解决方案2】:

    我不建议这样做。 JSP 中的 Scriptlet 不受欢迎。

    您使用的是哪个 Java EE 应用服务器?我希望它是 Java EE 5 或更高版本。我想知道您是否从较旧的 EJB 标准开始。

    【讨论】:

    • 感谢您的回答。即使这是我第一个使用 EJB + JSP 的应用程序,我也很清楚这不是最好的方法。我只想看到工作正常。无论如何,我将 J2EE 1.4 与 JBoss 4 一起使用。我也在使用 Netbeans 6.9.1。及时:我是否需要在我的 web.xml 中添加有关家庭/远程接口的内容?
    • 也许一个 是补品:javahowto.blogspot.com/2010/07/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    相关资源
    最近更新 更多