社区
Web 开发
帖子详情
JSP如何调用EJB
yantuodi
2003-08-22 02:10:44
请问高手JSP调用EJB与调用JAVA BEAN一样吗?
若不一样,能否结合例子讲一下!
...全文
261
9
打赏
收藏
JSP如何调用EJB
请问高手JSP调用EJB与调用JAVA BEAN一样吗? 若不一样,能否结合例子讲一下!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
orant
2003-08-23
打赏
举报
回复
我也在学研究用JSP调用EJB
让我问一下 ,再回
xinshou1979330
2003-08-22
打赏
举报
回复
Bean和Servlet的企业应用
创建一个HTML页面:
这个页面名字为bonus.html。HTML代码如下:
代码中,让人感兴趣的是用别名来调用BonusServlet.class。因为在后面提到的应用程序的组装的时候,将它映射到了这个别名BonusServlet上
<HTML>
<BODY BGCOLOR = "WHITE">
<BLOCKQUOTE>
<H3>Bonus Calculation</H3>
<FORM METHOD="GET" ACTION="BonusAlias">
<P>
Enter social security Number:
<P>
<INPUT TYPE="TEXT" NAME="SOCSEC"></INPUT>
<P>
Enter Multiplier:
<P>
<INPUT TYPE="TEXT" NAME="MULTIPLIER"></INPUT>
<P>
<INPUT TYPE="SUBMIT" VALUE="Submit">
<INPUT TYPE="RESET">
</FORM>
</BLOCKQUOTE>
</BODY>
</HTML>
这个HTML文件有两个数据域,用户可以输入社会保险号和一个乘数。当用户单击了Submit按纽。BonusServlet就得到了终端用户的数据。然后寻找Session Bean。将用户数据传递给Session Bean。Session Bean计算出奖金,把结果返回给Servlet。Servlet再通过另一个HTML页面将奖金结果返回给用户。
创建Servlet:
例子假定BonusServlet.java文件是在C:\J2EE\Client-Code目录下面。在运行的时候,Servlet代码执行如下操作:
获得用户数据
查找Session Bean
将用户数据传递给Session Bean
在得到Session Bean的返回结果以后,创建一个HTML页面将结果返回给客户。
Servlet代码如下:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
import Beans.*;
public class BonusServlet extends HttpServlet {
CalcHome homecalc;
public void init(ServletConfig config)
throws ServletException{
//Look up home interface
try{
InitialContext ctx = new InitialContext();
Object objref = ctx.lookup("calcs");
homecalc =
(CalcHome)PortableRemoteObject.narrow(
objref,
CalcHome.class);
} catch (Exception NamingException) {
NamingException.printStackTrace();
}
}
public void doGet (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String socsec = null;
int multiplier = 0;
double calc = 0.0;
PrintWriter out;
response.setContentType("text/html");
String title = "EJB Example";
out = response.getWriter();
out.println("<HTML><HEAD><TITLE>");
out.println(title);
out.println("</TITLE></HEAD><BODY>");
try{
Calc theCalculation;
//Get Multiplier and Social Security Information
String strMult =
request.getParameter("MULTIPLIER");
Integer integerMult = new Integer(strMult);
multiplier = integerMult.intValue();
socsec = request.getParameter("SOCSEC");
//Calculate bonus.10 AUGUST 28, 2000
double bonus = 100.00;
theCalculation = homecalc.create();
calc =
theCalculation.calcBonus(multiplier, bonus);
} catch(Exception CreateException){
CreateException.printStackTrace();
}
//Display Data
out.println("<H1>Bonus Calculation</H1>");
out.println("<P>Soc Sec: " + socsec + "<P>");
out.println("<P>Multiplier: " +
multiplier + "<P>");
out.println("<P>Bonus Amount: " + calc + "<P>");
out.println("</BODY></HTML>");
out.close();
}
public void destroy() {
System.out.println("Destroy");
}
}
在import子句中,javax.servlet包括了Servlet Class的协议。Java.io是系统输入输出包。Javax.naming里面包含了Java名字目录服务APIs。Javax.rmi是用来Session Bean的home接口和Remote对象的通信使用的。
在BonusServlet.init方法中,查找Session Bean的home接口。并且产生它的实例。方法使用了JNDI在组件的组装中的指定的名字calcs。用它来得到home接口的reference。然后就把这个reference和home接口类传递给PortableRemoteObject.narrow方法。来保证把reference转化为CalcHome类型。
DoGet()方法有两个参数。一个是request对象,另一个是reponse对象。浏览器发送一个request对象给Servlet。而Servlet返回一个response对象给浏览器。方法访问request对象里面的信息,可以发现是谁在发出的请求、请求的数据在什么表单里面、是哪个HTTP头被发送。并使用reponse对象产生一个HTML页面来响应浏览器的请求。
当方法处理请求的时候,如果产生输入输出错误,就抛出一个IOException异常。如果不能处理请求,就会抛出一个ServletException异常。为了计算奖金值,doGet()创建了一个home接口,调用它的calcBonus。
创建Session Bean:
Session Bean代表了与客户的一个短暂的会话。如果服务或者客户有一方崩溃了。数据就消失了。相反,Entity Bean代表了数据库中一段持久的数据。如果服务或者客户又一方崩溃了,底层的服务保证数据能被保存下来。
因为这个Enterprise Bean只是应BonusServlet的请求,执行了一个简单的计算。如果发生崩溃,可以重新初始化计算。这样,我们在本例子中就选择Session Bean来实现这个计算。
在组装配置好以后,Servlet组件和Session Bean组件如何在一个J2EE应用程序中协同工作。容器是Session Bean和支持Session Bean的底层平台之间的接口。容器是在配置期间产生的。
本例子假定CalcBean.java、Calc.java和CalcHome.java文件都放在C:\J2EE\Beans目录下面。CalcHome.java文件前面的Package名字 Beans和目录Beans的名字应该是一样的。当这些文件被编译的时候,是从Beans目录中编译,其名字是包的名字后面加一个斜线在加上类或者接口的名字。
CalcHome.java文件:
package Beans;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
public interface CalcHome extends EJBHome {
Calc create() throws CreateException, RemoteException;
}
BonusServlet并不直接同Session Bean通信。而是通过产生一个CalcHome的实例。这个Home接口扩展了EJBHome接口。有一个Create()方法,用来在容器中产生一个Session Bean。如果无法产生Session Bean,将会抛出一个CreateException异常。如果不能与Session Bean的远程方法通信,就会抛出一个RemoteException异常。
Calc.java文件:
package Beans;
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface Calc extends EJBObject {
public double calcBonus(int multiplier,
double bonus)
throws RemoteException;
}
产生一个Home接口以后,J2EE应用程序就创建一个Remote接口和一个Session Bean。Remote接口扩展了EJBObject接口。并且声明了一个calcBonus()方法来计算奖金值。方法需要抛出javax.rmi.RemoteException异常。方法的实现在CalcBean类里面。
CalcBean.java文件:
package Beans;
import java.rmi.RemoteException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
public class CalcBean implements SessionBean {
public double calcBonus(int multiplier,
double bonus) {
double calc = (multiplier*bonus);
return calc;
}
public void ejbCreate() { }
public void setSessionContext(
SessionContext ctx) { }
public void ejbRemove() { }
public void ejbActivate() { }
public void ejbPassivate() { }
public void ejbLoad() { }
public void ejbStore() { }
}
本Session Bean类实现了SessionBean接口,提供了CalcBonus()方法的行为。在BonusServlet调用CalcHome的Create()方法以后,依次调用setSessionContext()方法和ejbCreate()方法。
这些空的方法是从SessionBean中来的。由容器负责调用。除非在Bean的创建或者删除里面,你需要附加一些你自己的操作。否者,你并不需要提供这些方法的行为。
不知道是不是楼主想要的
自我感觉真的很难因为我的水平还不够, 学习ing
wueg2003
2003-08-22
打赏
举报
回复
与servlet一样调用
howelltech
2003-08-22
打赏
举报
回复
jsp最好不要调用ejb或javabean,因为不符合mvc模式。
用servlet调用ejb,写法就像wizardho(hh)写的。
Alain_Delone
2003-08-22
打赏
举报
回复
就是把SERVLET中调用的方法放到JSP中
的《% %》中
不过你这样太恐怖了,哪有JSP调EJB,那么后端的东西,放SERVLET都有些太浅了
至少弄个代理吧
conning333
2003-08-22
打赏
举报
回复
和其他地方调用ejb方法一样
Leemaasn
2003-08-22
打赏
举报
回复
和servlet调用ejb 一样
lcfgaoyong
2003-08-22
打赏
举报
回复
mark
wizardho
2003-08-22
打赏
举报
回复
Context ctx=new InitialContext();
InfoSLBHome infoslbhome=(InfoSLBHome)ctx.lookup("InfoSLB"); InfoSLB infoslb=infoslbhome.create();
通过servlet比较好
JSP
调用
EJB
例子[归类].pdf
JSP
调用
EJB
例子[归类].pdf
JSP
+
EJB
+ Servlet 实例
使用原始的servlet操作熟悉
EJB
的实体管理。 本实例主要功能:实现对员工、角色、账号、部门的关系管理。 本实例的实体设计:部门-员工:一对多。员工-账号:一对一。账号-角色:一对一。 主要采用
EJB
进行会话管理。 配置信息:使用JBOSS和MYsql数据库,在MYsql建立一个SSH数据库,然后数据库的名字和密码在jboss里配置一下,最后配置
EJB
工程内的XML文件,修改为creat-drop即可在项目启动过程中自动建立创建表。
Java B-S结构
EJB
用法例子.rar
Java B-S结构
EJB
用法例子,在
JSP
页面中,为初始化上下文获得一个系统属性对象,初始化并得到一个上下文,查询jndi名,通过强制转型得到Home接口,得到远程接口的引用,
JSP
调用
EJB
的例子。
EJB
3.0——
jsp
网页
调用
实例
很多学者对
EJB
3.0的有状态会话Bean和无状态会话Bean的概念不太清楚,通过本人这次上机实验,本人搞清楚了有状态会话Bean和无状态会话Bean的区别,同时利用无状态会话bean和有状态会话Bean实现了相关的实例。希望对大家能够有点用。本例子中包含有状态会话Bean实现简易的购物车。
J2EE的
EJB
实践总结包
EJB
实践的服务器是用SUN的服务器,也有用weblogic的一些例子。包里还包括
EJB
调用
EJB
、连接数据库、命令行布署
EJB
等总结。另外,还包括对Jasmine购物系统的分析及总结。是学习
EJB
很好的总结。
Web 开发
81,092
社区成员
341,716
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章