我是J2EE / EJB领域的新手,我正在关注一些基本的例子。我已经实现了一个非常简单的类,它总和了2个数字。我有家庭和远程接口以及Enterprise Bean(无状态)本身。
Adder.java //Remote interface
AdderHome.java //Home interface
AdderBean.java //The EJB class
将其作为EJB应用程序进行测试时,一切都运行良好。但是现在,我想将它作为一个JSP页面进行测试,但是在从home接口实例化远程接口时,我得到一个错误(实际上没有输出)。
及时:我正在使用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中添加一些新值?
答案 0 :(得分:1)
我同意Duffymo。你正在做的是错了。
EJB是一项伟大的技术,但EJB2是彻头彻尾的邪恶。它设计在象牙塔中,只有一个目标:让开发人员的生活尽可能地困难。
在这个时间和日期,没有理由启动与EJB2。学习EJB2的唯一原因是当你必须维护一些用EJB2编写的旧遗留应用程序时(但我建议找另一份工作)。
尽管只有1个版本更高,但EJB3却完全不同。它简单,轻便,非常符合逻辑,并且得到了很多社区反馈。但即使是EJB3也很老了。当前版本是EJB3.1,可以与Glassfish v3.1,JBoss AS 6或Resin 4一起使用(使用Resin,您将获得EJB3.1 lite +)。
答案 1 :(得分:0)
我不建议这样做。 JSP中的Scriptlet不受欢迎。
您使用的是哪个Java EE应用服务器?我希望它是Java EE 5或更高版本。我想知道你是否从较旧的EJB标准开始。