1.使用myeclipse新建Java Project项目,结构如图
2.添加C:\Oracle\Middleware\Oracle_Home\wlserver\server\lib (若bea版本不同则目录略有差异)目录下的wlclient.jar, weblogic.jar, api.jar, wls-api.jar到classpath, 这些jar包只是为了让EJB程序编译通过, 在打包ejb的时候不需要它们.
3.新建一个包, 你想咋命名就咋命名, 比如com.mypkg1.mypkg2.ejb, 写一个接口HelloWorld, 它包含一个业务方法:
package com.ejb;
public interface HelloWord {
public String sayHello(String name);
}
4.新建一个类HelloWorldBean 实现这个接口, 同时我们通过注解表明这是一个Stateless的Remote接口为HelloWorld的EJB, 它的jndi name 为HelloWorldBean(可以随便指定).
package com.ejb;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless(mappedName = "HelloWordImp")
@Remote ({HelloWord.class})
public class HelloWordImp implements HelloWord{
@Override
public String sayHello(String name) {
return name + " say hello.";
}
}
5.用myeclipse提供的export工具把这个项目导出为jar包, 只选中HelloWord.Java和HelloWordImp.java,其他文件忽略, 导出文件可取名为MyEjb.jar.
6.到http://localhost:7001/console正常部署这个MyEjb.jar并激活它, 目标选择AdminServer,方便后续看查询jndi。
7.选择“服务器”->“AdminServer”->“配置”->“一般信息”->“查看JNDI树”,如图所示:
8.写测试程序测试结果,新建一个JUnit Test Case测试类,代码如下:
public class EjbTest {
@Test
public void test() throws NamingException {
Properties properties = new Properties();
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
properties.setProperty(Context.PROVIDER_URL, "t3://localhost:7001");
properties.setProperty(Context.SECURITY_PRINCIPAL, "weblogic");
properties.setProperty(Context.SECURITY_CREDENTIALS, "zhaoyan1992");
Context context = new InitialContext(properties);
HelloWord session = (HelloWord) context.lookup("HelloWordImp#com.ejb.HelloWord");
System.out.println(session.sayHello("test1"));
}
}
9.结果如下:
10.心得体会
在学习过程中,仅仅看资料很难懂一些东西,在做这个简单的ejb时就遇到了很多的问题,一个简单的类和方法打包后,然后部署运行就会出现各种异常,去查询了很多资料才知道是缺少包的原因,后面增加了对应的包,再次运行就顺畅多了。而且很多流程也慢慢的懂了。