📄 ejb内部资参1.txt
字号:
public void ejbCreate() throws javax.ejb.CreateException
{
System.out.println("ejbCreate()");
}
/**
* 由EJB Server(EJB Container) 调用,用于惰化SessionBean的实例
*/
public void ejbPassivate() throws EJBException, java.rmi.RemoteExcepti
on
{
System.out.println("ejbPassivate()");
}
/**
* 由EJB Server(EJB Container) 调用,用于删除SessionBean的实例
*/
public void ejbRemove() throws EJBException, java.rmi.RemoteException
{
System.out.println("ejbRemove()");
}
/**
* 本SessionBean提供给客户调用的方法,但不能由客户直接调用,而是通过Ejb
Object远程接口调用
* 创建日期:(2000-8-1 16:04:58)
* @return java.lang.String
*/
public String hello() {
return "Hello, World!";
}
/**
* 由EJB Server(EJB Container) 调用,用于设置SessionBean的上下文
*/
public void setSessionContext(SessionContext arg1) throws EJBException
, java.rmi.RemoteException
{
System.out.println("setSessionContext()");
}
}
第二步:扩展javax.ejb.EJBObject接口,增加在第一步SessionBean 接口实现中
提供给客户调用 的方法, 如本例的hello()方法
注意:1)增加的方法名称必须与相应的SessionBean实现中方法相同(case-sen
sitive);
2) 增加的方法必须抛出java.rmi.RemoteException异常
package com.jsper.ejbexample.session.helloworld;
import java.rmi.*;
import javax.ejb.*;
public interface Hello extends EJBObject {
/**
* 由客户端直接调用,返回“hello,world!”,实现由相应的SessionBean完成
* 创建日期:(2000-8-1 15:56:25)
* @return java.lang.String
* @exception java.rmi.RemoteException 异常说明。
*/
String hello() throws java.rmi.RemoteException;
}
第三步:扩展javax.ejb.EJBHome接口,增加创建EJBHome接口对象的create()方法
注意: 1)create()方法中参数的有无无关紧要,但必须与SessionBean接口实现
类中ejbCreate()方法相对应,包括从方法的个数上和参数上;例如:若SessionB
ean接口实现类中有ejbCreate(),ejbCreate(int nVal)方法,则该接口扩展中必
须增加create(),create(int nVal)方法
2)create()方法必须抛出javax.ejb.CreateException 和java.rmi.RemoteExce
ption 异常
package com.jsper.ejbexample.session.helloworld;
import java.rmi.*;
import javax.ejb.*;
public interface HelloHome extends EJBHome {
/**
* 创建EJBObject扩展对象Hello
* 创建日期:(2000-8-1 16:13:53)
* @return com.jsper.ejbexample.session.helloworld.Hello
* @exception javax.ejb.CreateException 异常说明。
* @exception java.rmi.RemoteException 异常说明。
*/
Hello create() throws javax.ejb.CreateException, java.rmi.RemoteExcept
ion;
}
? deploy descriptor文件的生成
EJB1.1规范规定了必须利用xml文件构造deploy descriptor文件,并给出了相应
的DTD。本例的ejb-jar.xml文件如下:
images/green-cube.gif
images/orange-cube.gif
helloworld
com.jsper.ejbexample.session.helloworld.HelloHome
com.jsper.ejbexample.session.helloworld.Hello
com.jsper.ejbexample.session.helloworld.HelloBean
Stateless
Container
BEAS
java.lang.Double
100.0
MSFT
java.lang.Double
150.0
helloworld
Remote
*
Required
对于weblogic Server还必须构造一个名为weblogic-ejb-jar.xml的文件,BEA公
司给出了相应的DTD.它描述了相应的EJB的名称以及JNDI的名称(**该部分与EJB
Server有关,ejb开发人员可省去,而由DEPLOYER来完成**)
helloworld
100
hello.HelloHome
? 提供用于标示本EJB的大小图标(icon),注意:图像的格式必须是JPEG 或 GI
F。
本例提供了图像文件:orange-cube.gif和green-cube.gif(见附件)
? 构造.jar文件
第一步:编译相应的.java文件
本例中包括:Hello.java,HelloBean.java,HelloHome.java ,位于包com.jsper
.ejbexample.session.helloworld中。编译后相应的.class文件放在相对目录co
m\jsper\ejbexample\session\helloworld 中。
第二步:创建与com的同级目录META-INF,将相应的.xml文件拷贝到该目录下;将相
应的图标文件拷贝到相对目录(相对于该.xml文件父目录)中(本例为与com的同
级目录images)
第三步:利用JAR命令将目录com,images,META-INF中的内容做成.jar文件
本例JAR文件名成为std_hello.jar
jar cv0f std_hello.jar META-INF com images
至此, 对于EJB Provider的工作已经完成。
但是由于我们的开发人员在开发ejb的时候需要进行本地调试等工作,因此其既充
当ejb provider的角色,又充当其他的脚色, 因此,其可能需要作如下工作(仅
供参考,接上述工作):
? 生成可deployable的jar文件
前边生成的jar文件(若不含weblogic-ejb-jar.xml文件)是不依赖于ejb serve
r(ejb container)的,而如前所述,不同的ejb server对于ejb的配置是不同的
,因此需要加上特定的信息
对于weblogic server则是通过相应的ejbc命令或deploy utility在原.jar文件的
基础上生成新的可deployable的.jar文件。(关于ejbc的详细使用请参见有关资料
):
java –classpath e:\weblogic\classes;e:\weblogic\lib\weblogicaux.jar
-Dweblogic.home=e:\weblogic weblogic.ejbc -compiler javac std_hello.ja
r ejb_helloworld.jar
? 设定weblogic的环境
将最终的jar文件(本例ejb_helloworld.jar)放在weblogic的某一子目录下(例如
:myserver),而后将.jar文件所在的路径( e:/weblogic/myserver/ ejb_hel
loworld.jar)添加到weblogic.properties文件的入口weblogic.ejb.deploy中(
weblogic.ejb.deploy=e:/weblogic/myserver/ejb_helloworld.jar)
? 启动weblogic server, 在其启动的控制台中可以见到相应的ejb的装载成功的
信息。
? 客户端调用
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -