开发步骤
1.开发服务端
1.1 开发HelloWorld和HelloWorldLocal接口,在开发HelloWorldBean实现类
2.开发客户端
2.1 开发EJBClient2的java客户端项目和EJBClient的web项目
3.把helloworld.jar服务和EJBClient.war都部署在JBoss容器里,helloworld.jar打包时只需要选定HelloWorld、HelloWorldLocal、HelloWorldBean这三个类导出即可;
HelloWorld.java //远程接口类
package cn.cmcc.ejb3;
public interface HelloWorld {
public String say(String name);
}
HelloWorldLocal.java //本地接口类,现在是模拟,所以就一样的
package cn.cmcc.ejb3;
public interface HelloWorldLocal extends HelloWorld {
}
HelloWorldBean.java //接口实现类
package cn.cmcc.ejb3.impl;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import cn.cmcc.ejb3.HelloWorld;
import cn.cmcc.ejb3.HelloWorldLocal;
@Stateless //申明是一个无状态bean
@Remote(HelloWorld.class) //申明是一个远程接口,不写默认是本地接口
@Local(HelloWorldLocal.class) //申明是一个本地接口
public class HelloWorldBean implements HelloWorld,HelloWorldLocal {
@Override
public String say(String name) {
return name+":说,您好";
}
}
EJBClient2.java //这个是远程接口,因为这个项目和helloworld.jar不在同一个应用服务器中,所以调用远程接口
package cn.cmcc.test;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import cn.cmcc.ejb3.HelloWorld;
public class EJBClient2 {
public static void main(String[] args) {
try {
//默认是去classpath下寻找jndi.properties文件
InitialContext ctx = new InitialContext();
HelloWorld helloworld = (HelloWorld) ctx
.lookup("HelloWorldBean/remote");
System.out.println(helloworld.say("佛山"));
} catch (NamingException e) {
System.out.println(e.getMessage());
}
}
}
EJBClient.war是一个web项目,和服务端部署在同一个JBOSS应用服务器中,就已个简单的页面
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="javax.naming.*"%>
<%@page import="cn.cmcc.ejb3.*"%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
try {
/*
当web客户端和EJB服务部署在同一个应用服务器中,因为应用服务器启动时会把JNDI驱动类等上下文信息添加进系统属性
当不再同一个应用服务器中,需要指定JNDI驱动类等上下文信息
因为现在是helloworld.jar服务和EJBClient.war都部署在JBoss容器里,所以不需要指定JNDI驱动类等上下文信息
*/
InitialContext ctx = new InitialContext();
HelloWorldLocal helloworld = (HelloWorldLocal) ctx
.lookup("HelloWorldBean/local");
out.println(helloworld.say("佛山"));
} catch (NamingException e) {
out.println(e.getMessage());
}
%>
</body>
</html>
相关推荐
在本节讲解中,我们将深入...综上所述,了解和掌握EJB3中无状态bean的开发,特别是本地接口的应用,对于开发高效的企业级Java应用至关重要。结合源码实践和合适的开发工具,可以帮助开发者更好地理解和运用这些概念。
总结,EJB3.0无状态SessionBean的例子展示了如何利用注解简化开发流程,以及如何通过本地和远程接口进行组件间的通信。理解并掌握这些概念对于构建可扩展、健壮的企业级Java应用至关重要。通过学习这个示例,开发者...
- **接口文件**:实体Bean拥有对外接口(远程接口`RemoteInterface`和本地接口`LocalInterface`)以及Home接口。Home接口提供了创建、查找和删除实体Bean实例的方法。 4. **实体Bean示例**:假设有一个名为`...
WebLogic是Oracle公司的一款企业级...总之,WebLogic部署EJB 2.0涉及编写Session Bean、本地接口、配置部署描述符和实际部署到服务器等多个步骤。理解和掌握这些概念对于开发和维护基于Java EE的企业级应用至关重要。
**ejb3.0 第2,3讲 - 开发第一个无状态会话bean和客户端** 在Java企业版(Java EE)中,Enterprise JavaBeans(EJB)是用于构建可扩展、安全和事务处理的服务器端应用程序的核心组件。EJB 3.0是一个重要的版本,它极...
3. 注解配置:使用注解如`@Remote`或`@Local`定义远程或本地接口,`@EJB`注解注入其他依赖的Bean。 五、部署和测试 1. 配置Jboss:在Jboss的部署目录下,添加EJB JAR文件或包含EJB的WAR/EAR文件。 2. 远程调用:...
7. **远程接口和本地接口**:实体Bean可以提供远程接口供远程客户端调用,也可以提供本地接口供在同一应用内的其他组件调用。 8. **容器服务**:EJB容器提供诸如并发控制、持久化、事务、安全性和容错等服务,...
总结,EJB2 Session Bean是Java企业级开发中的重要组成部分,它提供了一种组织和执行业务逻辑的方法,支持本地和远程调用,具有完善的事务管理和生命周期管理机制。通过EJBClient,客户端可以方便地与Session Bean...
Session Bean可以提供远程接口供远程客户端调用,也可以提供本地接口供同一应用内的其他组件调用。这两种接口的使用场景和配置会在录像中进行演示。 8. **实战示例**: 视频可能包含一个实际的例子,例如创建一个...
2. **实现会话Bean**:创建一个实现了远程接口的类,并使用`@Stateless`(对于无状态会话Bean)或`@Stateful`(对于有状态会话Bean)注解标记它。同时,这个类还需要实现远程接口。 ```java import javax.ejb....
实体Bean由本地接口、远程接口、bean类、主键类和配置描述器组成。本地接口扩展了EJBHome接口,提供create、remove、finder和home等方法。create方法触发ejbCreate,对应数据插入;remove方法对应数据删除;finder...
根据其对会话状态的处理方式,会话Bean主要分为两种类型:有状态会话Bean(Stateful Session Bean)和无状态会话Bean(Stateless Session Bean)。 ##### 无状态会话Bean(Stateless Session Bean) 无状态会话...
它们由本地接口、远程接口、bean类、主键类和配置描述器组成。实体bean可以是CMP(Container-Managed Persistence)或BMP(Bean-Managed Persistence),前者由容器负责数据持久化,简化开发,后者则需要开发者自己...
分为无状态会话bean和有状态会话bean。无状态会话bean不维护会话信息,而有状态会话bean可以保存客户端会话的上下文信息。 5. **Message-driven Beans**:消息驱动bean用于响应来自消息队列的消息。它们在后台运行...
1. **定义接口**:为EJB定义本地和远程接口。 2. **实现EJB类**:实现接口中定义的方法,包括业务逻辑的实现。 3. **配置部署描述符**:使用`ejb-jar.xml`文件指定EJB的部署属性。 **部署到应用服务器** 1. **打包...
- 当开发一个只有Remote接口的无状态会话Bean时,需要使用`@Remote`注解声明接口是远程接口。 - 如果既不使用`@Local`也不使用`@Remote`注解,容器会默认将接口视为Local接口。 - 示例代码: ```java @Local ...
在开始编写无状态的SessionBean之前,首先需要确保开发环境已经正确配置。以下是所需的主要组件: 1. **Eclipse**:版本3.4.2,推荐使用针对Java EE开发者的Eclipse版本。 2. **JBoss**:版本5.0.1,可以从官方网站...