1.新建EJB Project HelloWorldEJB
网上都说如果使用XDoclet,要选J2EE 1.3,选J2EE 1.4可能产生不可靠的XDoclet 结果
2.新建SESSION BEAN
包名必须要以ejb结尾。这里叫com.ejb
类名为 HelloEJB
我习惯于创建ejbCreate()方法,无状态的SESSION BEAN 的 ejbCreate()方法不能有参数
创建完成后会有些警告,按照提示修改就可以了,主要改动为
1.增加默认的UID: private static final long serialVersionUID = 1L ;(L表示是一个long型)
2.把私有成员变量移除:
public void setSessionContext(SessionContext newContext)
throws EJBException {}
3.修改注释信息
注释信息如下:
* @ejb.bean name="Hello" //bean 名
* display-name="Name for Hello"
* description="Description for Hello"
* jndi-name="ejb/Hello" //远程HOME接口
* type="Stateless"
* view-type="remote"
可以修改注释信息,来满足自己的需要
* @ejb.bean name="Hello"
* display-name="Hello"
* description="HelloEJB"
* jndi-name="ejb/HelloHome"
* type="Stateless"
* view-type="remote"
如果需要本地HOME接口,可以添加
* local-jndi-name=”ejb/HelloLocalHome”
4.添加业务逻辑
此处添加(注释不能去掉)
修改为
Public String sayhello() throws EJBException{
Return new String(“Hello,EJB”);
}
5.配置XDoclet
选择Project->Properties
选择Add Standard
选择Standard EJB
选中ejbdoclet,单击右键,选择Add
选择weblogic(倒数第三个) 然后OK
就会多了个weblogic项
修改右边Property里,destDir的value为src/META-INF
OK
6.Run XDoclet
选中工程,右键选择MyEclipse->Run XDoclet
Build successful
这时src目录下生成了6个文件
Com/ejb/HelloSession.java
Com/Interfaces/Hello.java
Com/Interfaces/HelloHome.java
Com/Interfaces/HelloUtil.java
META-INF/ejb-jar.xml //EJB的部署文件
META-INF/weblogic-ejb-jar.xml
7.部署测试
启动weblogic服务器,在weblogic console下手工部署
选Deployments 和上面的LOCK&EDIT
选择Install
按照目录(class文件目录),名字自己起,我的就叫CLASSES了,没有改
完成后,选Active Change,激活,看看有没有错误
准备好了,现在激活(START)
处于Active状态,没有问题了。
也可以把EJB打包成一个JAR包,在weblogic console部署,打包命令:
Jar cvf 包名.JAR com(包含class文件) META-INF(包含XML文件)
8.开发客户端
新建JAVA文件
文件如下
package com.service;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import com.interfaces.HelloHome;
public class HelloEJBClient {
public static void main(String[] args)throws Exception{
//设置客户端上下文(weblgoic的,要导入weblogic.jar,否则会出现:
//Cannot instantiate class: weblogic.jndi.WLInitialContextFactory 错误
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
props.put(Context.PROVIDER_URL, "t3://localhost:7001");
Context ctx=new InitialContext(props);
//通过JNDI NAME 查找 HOME 对象
Object obj=ctx.lookup("ejb/HelloHome");
//类型转换
HelloHome home=(HelloHome)javax.rmi.PortableRemoteObject.narrow
( obj,HelloHome.class);
//使用 HOME 对象创建 EJB 对象
com.interfaces.Hello hello=home.create();
//调用 EJB 对象的业务方法
System.out.println(hello.sayhello());
//销毁 EJB 对象
hello.remove();
}
}
运行结果: