一、先给两个session Bean:
@Stateless(mappedName="helloBean")
@Remote(HelloWord.class)
①public class HelloWordBean implements HelloWord {
public String sayHello(String str) {
return str+"您好,这个表示测试成功,";
}
@Remote(LifeCycle.class)
@Stateless(mappedName="lifeCycleBean")
②public class LifeCycleBean implements LifeCycle {
@Override
public String sayBegin(String name) {
try{
Thread.sleep(1000*5);
}catch(InterruptedException e){
e.printStackTrace();
}
return "session bean 生命周期例子";
}
@Init
public void init(){
System.out.println("@Init事件触发");
}
@PostConstruct
public void construct(){
System.out.println("@construct事件触发");
}
@PreDestroy
public void exit(){
System.out.println("@PreDestroy事件触发");
}
它们分别的两个接口我想大家都自己写的出来吧!
下面直接说EJB3.0的DI设置注入方式的四种方法:(情况如在HelloWordBean需要另外一个LifeCycleBean 实例 )
第一种:通过全局JNDI方式,坏处移植性差。在HelloWordBean类里通过如下方式得到另外的bean实例:
InitialContext incx = new InitialContext();
LifeCycle lc = (LifeCycle)incx.lookup("lifeCycleBean#"+LifeCycle.class.getName());//返回lc实例
第二种:通过在在HelloWordBean类的成员属性或者字段使用EJB3.0的新注释@EJB
@EJB(mappedName="lifeCycleBean") LifeCycle lc;//返回lc实例
第三种:通过注册ENC方式(@注释方式、ejb-jar.xml、web.xml三种):应用服务器中的EJB容器有一个属于自己的的内部注册表,被称为ENC(enterprise Naming Context),EJB容器可以在其中维护某些指向外部资源的引用,把它想象成通讯薄,先要登记资源,在从中获取ENC资源的引用。
1.注释方式@
@EJB(name="ejb/lifeCycleBean",beanName="LifeCycleBean",beanInterface=LifeCycle.class)
获取另外bean实例:
InitialContext incx = new InitialContext();
LifeCycle lc = (LifeCycle)incx.lookup("java:comp/env/ejb/lifeCycleBean");//返回lc实例
2.配置符文件方式ejb-jar.xml
<enterprise-beans>
<session>
<ejb-name>HelloWordBean</ejb-name>
<ejb-ref>
<ejb-ref-name>ejb/lifeCycleBean</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<remote> com.bsm.test.statelessbean.LifeCycle</remote>
<ejb-link>LifeCycleBean</ejb-link>
</ejb-ref>
</session>
</enterprise-beans>
</ejb-jar>
二、客户端调用程序:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" import="java.util.*"%>
<%@ page import="javax.ejb.*"%>
<%@ page
import="javax.naming.*,
com.bsm.test.statelessbean.*,
com.bsm.test.stateful.*,"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ejb3.0测试页面</title>
</head>
<body>
<%
Properties pro = new Properties();
pro.setProperty(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
pro.setProperty(Context.PROVIDER_URL, "t3://localhost:7001");
InitialContext context = new InitialContext(pro);
HelloWord hello = (HelloWord) context.lookup("helloBean#"+HelloWord.class.getName());
String str = hello.sayHello("ejb3.0");
System.out.println(str);
%>
</body>
</html>
Finally:success
分享到:
相关推荐
10. **开发与测试**:讲解如何在IDE如Eclipse或IntelliJ中创建和运行EJB项目,以及使用JUnit进行单元测试。 源代码部分可能包含实际的EJB组件实现,这将有助于学习者通过实践来加深理解。`Ejb3_0.ppt`可能是EJB 3.0...
在企业级应用开发中,Spring、JavaServer Faces (JSF) 和 Enterprise JavaBeans 3 (EJB3) 是三个核心的框架和技术。这篇博客文章详细介绍了如何整合这些技术来构建高效且可扩展的企业应用程序。 首先,Spring 框架...
5. **EJB(Enterprise JavaBeans)**:虽然现代JavaEE开发中EJB使用较少,但在一些复杂的系统中,EJB可能用于实现业务组件,提供事务管理、安全性等功能。 6. **JPA(Java Persistence API)**:JPA是JAVAEE提供的...
9. 开发工具:Eclipse、IntelliJ IDEA等集成开发环境(IDE)提供了丰富的J2EE支持,包括代码自动完成、调试、部署等功能,极大地提高了开发效率。 通过理解并熟练掌握这些知识点,开发者可以有效地利用J2EE平台开发...
EJB容器可以帮助开发者实现更高效、更可靠的应用服务。 ##### 2.2 J2EE相关协议和服务 - **RMI/IIOP**:RMI(Remote Method Invocation)是Java特有的远程方法调用机制,允许本地客户端直接调用远程对象的方法;...
熟悉WebLogic、JBoss等应用服务器的安装配置与管理方法,对于实现应用的高可用性非常重要。此外,了解各种服务器之间的差异及特点也有助于更好地选择合适的产品。 #### 18. 学习面向切面编程(AOP) 了解AspectJ、...
MyEclipse是基于Eclipse平台的扩展,专为Java、Web、J2EE以及企业级应用开发提供了丰富的功能支持。这份教程涵盖了从基础操作到高级开发技巧的全面内容,特别强调了Struts 2和Spring框架的整合应用。 一、MyEclipse...
它包含了多种服务,如数据库连接、邮件服务、会话管理等,以及如Servlet、JSP、EJB(Enterprise JavaBeans)等技术规范,旨在提供一个标准的、可扩展的环境来构建分布式企业级应用。 5. **Spring框架**:Spring是...
#### 10. 学习远程调用API如RMI、RMI/IIOP等。 远程方法调用(Remote Method Invocation, RMI)使得不同虚拟机上的对象之间能够互相调用方法;而RMI/IIOP(Internet Inter-ORB Protocol)则实现了跨平台的远程对象...
- **集合框架**:List、Set、Map接口的实现类,如ArrayList、LinkedList、HashSet、HashMap等。 - **多线程**:线程的创建方式、同步机制(synchronized、Lock)以及线程间通信。 2. **J2EE组件**: - **Servlet...