`

EJB 3 学习例子 HelloWorld 小程序(使用JNDI)

    博客分类:
  • EJB
阅读更多

用这么久的EJB 3 .0 过去一直用EJB1.x 和 EJB 2.x 今天写了一个EJB 3 的小程序。在这里与大家分享一下

 

实现的功能就是在在内存中CRUD 操作

 

Step 1: Define a common interface(定义一个普通接口)

 

 

package com.use.test;

import java.util.Collection;

import com.use.entity.Student;

public interface IStudentOperation {
	
	void addStudent(Student student);
	
	void deleteStudent(int id);
	
	void updateStudent(Student student);
	
	Collection<Student> getAll();

}

 setup 2: Definition of the remote interface and local interface (定义远程接口和本地接口)

 

 

package com.use.test;

import javax.ejb.Local;

//VM 表示不同虑拟机
//这个注解用于同一下VM
@Local
public interface IStudentOperationLocal extends IStudentOperation {

}


package com.use.test;

import javax.ejb.Remote;

//不同VM 通信时要用到RPC 方式来通信可在不同VM 中
@Remote
public interface IStudentOperationRemote extends IStudentOperation {

}

 

  当然还要定义一个测试的对象

 

package com.use.entity;

import java.io.Serializable;

@SuppressWarnings("serial")
public class Student implements Serializable {
	
	private Integer id;
	
	private String name;
	
	private String sex;
	
	private int age;
	

	public Student(Integer id, String name, String sex, int age) {
		super();
		this.id = id;
		this.name = name;
		this.sex = sex;
		this.age = age;
	}

	public Student() {
		super();
	}

	public Student(String name, String sex, int age) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return super.toString()+" Student: 姓名:"+this.name+" 年龄:"+ this.age+"性别:"+this.sex;
	}
	

}

 step 3 To achieve the corresponding interfaces (实现对应的接口)

package com.use.test.impl;

import java.util.ArrayList;
import java.util.Collection;

import javax.ejb.Stateless;

import com.use.entity.Student;
import com.use.test.IStudentOperationLocal;
import com.use.test.IStudentOperationRemote;

@Stateless
public class StudentOperationImpl implements IStudentOperationLocal,
		IStudentOperationRemote {
	
	private Collection<Student> students = new ArrayList<Student>();

	@Override
	public void addStudent(Student student) 
	{
		students.add(student);
	}

	@Override
	public void deleteStudent(int id) 
	{
		
		for (Student en:students) 
		{
			if (en.getId().equals(id)) 
			{
				students.remove(en);
				return;
			}
		}

	}

	@Override
	public void updateStudent(Student student) 
	{
		
		for (Student en:students)
		{
			if (en.getId().equals(student.getId()))
			{
				en.setAge(student.getAge());
				en.setName(student.getName());
				en.setSex(student.getSex());
			}
		}

	}

	@Override
	public Collection<Student> getAll() 
	{
		return this.students;
	}

}

 

 

step 4 Preparation of test class 编写测试类

package com.use.test.client;

import java.util.Collection;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;

import com.use.entity.Student;
import com.use.test.IStudentOperationRemote;

public class Client {
	
	public static void main(String args[]) throws Exception 
	{
		
		Context ctx = null;
		String url = "jnp://localhost:1099";
		String purl = "org.jboss.naming:org.jnp.interfaces";
		String fcy = "org.jnp.interfaces.NamingContextFactory";
		Properties ps = new Properties();
		ps.put(Context.INITIAL_CONTEXT_FACTORY, fcy);
		ps.put(Context.PROVIDER_URL, url);
		ps.put(Context.URL_PKG_PREFIXES, purl);
		ctx = new InitialContext(ps);
		
		IStudentOperationRemote studentOperationRemote = null;
		
		Object h = ctx.lookup("StudentOperationImpl/remote");
		studentOperationRemote = (IStudentOperationRemote)PortableRemoteObject.narrow(h, IStudentOperationRemote.class);
		int count = 0;
		for (int i = 0 ; i < 7 ; i++)
		{
			Student student = new Student(i,"Liuqing" + i,"Usb" + i,i + 20);
			System.out.println("Count:" + count);
			studentOperationRemote.addStudent(student);
			count++;
		}
		Collection<Student> students  = studentOperationRemote.getAll();
		for (Student en:students) 
		{
			System.out.println("Spring+Ejb :"+en.toString());
		}
		
	}

}

  

 在运行就OK 注意思要先将对应的内容部署到JBOSS 服务器上才行

 

17:06:53,546 INFO  [JBossASKernel] Created KernelDeployment for: UsbHelloWorld.jar
17:06:53,546 INFO  [JBossASKernel] installing bean: jboss.j2ee:jar=UsbHelloWorld.jar,name=StudentOperationImpl,service=EJB3
17:06:53,546 INFO  [JBossASKernel]   with dependencies:
17:06:53,546 INFO  [JBossASKernel]   and demands:
17:06:53,546 INFO  [JBossASKernel] 	jboss.ejb:service=EJBTimerService
17:06:53,546 INFO  [JBossASKernel]   and supplies:
17:06:53,546 INFO  [JBossASKernel] 	jndi:StudentOperationImpl/local-com.use.test.IStudentOperationLocal
17:06:53,546 INFO  [JBossASKernel] 	jndi:StudentOperationImpl/local
17:06:53,546 INFO  [JBossASKernel] 	jndi:StudentOperationImpl/remote
17:06:53,546 INFO  [JBossASKernel] 	jndi:StudentOperationImpl/remote-com.use.test.IStudentOperationRemote
17:06:53,546 INFO  [JBossASKernel] 	Class:com.use.test.IStudentOperationLocal
17:06:53,546 INFO  [JBossASKernel] 	Class:com.use.test.IStudentOperationRemote
17:06:53,546 INFO  [JBossASKernel] Added bean(jboss.j2ee:jar=UsbHelloWorld.jar,name=StudentOperationImpl,service=EJB3) to KernelDeployment of: UsbHelloWorld.jar
17:06:53,609 INFO  [SessionSpecContainer] Starting jboss.j2ee:jar=UsbHelloWorld.jar,name=StudentOperationImpl,service=EJB3
17:06:53,609 INFO  [EJBContainer] STARTED EJB: com.use.test.impl.StudentOperationImpl ejbName: StudentOperationImpl
17:06:53,656 INFO  [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:

	StudentOperationImpl/remote - EJB3.x Default Remote Business Interface
	StudentOperationImpl/remote-com.use.test.IStudentOperationRemote - EJB3.x Remote Business Interface
	StudentOperationImpl/local - EJB3.x Default Local Business Interface
	StudentOperationImpl/local-com.use.test.IStudentOperationLocal - EJB3.x Local Business Interface

 

 step 5 运行结果 如果是这个结果就正常了

 

Count:0
Count:1
Count:2
Count:3
Count:4
Count:5
Count:6
Spring+Ejb :com.use.entity.Student@23e5d1 Student: 姓名:Liuqing0 年龄:20性别:Usb0
Spring+Ejb :com.use.entity.Student@c4fe76 Student: 姓名:Liuqing1 年龄:21性别:Usb1
Spring+Ejb :com.use.entity.Student@11e1e67 Student: 姓名:Liuqing2 年龄:22性别:Usb2
Spring+Ejb :com.use.entity.Student@5e176f Student: 姓名:Liuqing3 年龄:23性别:Usb3
Spring+Ejb :com.use.entity.Student@1549f94 Student: 姓名:Liuqing4 年龄:24性别:Usb4
Spring+Ejb :com.use.entity.Student@b8c8e6 Student: 姓名:Liuqing5 年龄:25性别:Usb5
Spring+Ejb :com.use.entity.Student@18d9850 Student: 姓名:Liuqing6 年龄:26性别:Usb6

 

分享到:
评论

相关推荐

    EJB3.0之HelloWorld

    通过学习这个"HelloWorld"示例,开发者可以快速理解EJB3.0的基础操作,并进一步探索更复杂的EJB特性和应用场景,如会话bean、消息驱动bean以及定时器服务等。实践中,结合JPA和JSF等Java EE组件,可以构建出强大的...

    EJB3 maven helloworld项目

    在这个“EJB3 Maven HelloWorld”项目中,我们将探讨如何利用Maven构建一个简单的EJB3应用程序,并在JBoss5应用服务器上运行。 首先,我们来看Maven。Maven是Java开发中的一个项目管理和综合工具,它通过使用一种...

    EJB HelloWorld

    HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote"); out.println(helloworld.SayHello("佛山人")); 5.用ant或eclipse,把客户端文件打成war包,发布到jboss上 6.输入...

    Seam 例子 Hello World

    - **访问URL**:通过`http://localhost:8080/helloworld/`访问应用。 #### 九、总结 通过这个简单的Hello World示例,我们可以看到Seam框架如何简化了Java Web应用程序的开发过程。从实体定义到页面处理,再到事件...

    Java EJB简单例子.rar

    Java EJB简单例子,这是HelloWorldBean的Home接口,它是EJB对象的生成库,无状态会话(将在下一个实例中具体讲解)Bean,这个接口是客户端与EJB对象相互作用的中间途径,通过Client触发调用Bean方法:  try {  //...

    ejb例子程序

    总之,这个ejb例子程序展示了如何结合使用EJB和JPA来构建一个具备业务逻辑处理和数据持久化的Java EE应用。通过学习和理解这个示例,开发者可以深入理解这两种技术的核心概念和实际应用,为开发更复杂的分布式企业级...

    weblogic JNDI helloworld实例

    把文件用weblogic部署上去,然后反编译jar中的bind类 执行主方法weblogic就有打印出hello ejb的字样了,很好的一个ejb实例。

    EJB Dev 1: EJB入门例子

    **EJB Dev 1: EJB入门...通过学习这个EJB入门例子,你可以了解EJB的基本工作原理,为进一步深入研究Java EE和分布式系统打下坚实的基础。同时,实践操作和分析源码将加深对EJB的理解,并提升你的企业级应用开发能力。

    完整EJB3.0第一个HelloWord,

    在EJB3.0的第一个"Hello, World"项目中,我们将学习如何创建和配置一个简单的EJB组件。首先,我们需要了解EJB的基本概念。EJB分为三种类型:会话bean(Session Beans)、实体bean(Entity Beans)和消息驱动bean...

    Ejb学习

    **EJB(Enterprise JavaBeans)学习指南** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,主要用于构建可扩展的、安全的、事务处理的分布式企业级应用程序。EJB技术经历了从早期版本到现代EJB 3.x的演变...

    EJB项目例子

    - **HelloEJB**:可能是一个会话Bean,实现一个简单的“Hello, World!”功能,展示EJB的基本用法。 - **客户端调用**:EJB的客户端可以是另一个Java应用,通过JNDI查找并调用Bean的方法。 5. **EJB的优缺点** - ...

    EJB client调用EJB3 .doc

    HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote"); ``` 这里,`ctx.lookup()`方法用于根据EJB的JNDI名称查找并实例化EJB。由于在同一个JVM内,无需显式设置`InitialContext`的环境属性...

    EJB3.0无状态SessionBean例子

    在示例中,`EJB-HelloWorld`可能包含了名为`HelloWorldLocal`的本地接口,其中定义了业务方法,如`sayHello()`。然后,在Bean类中,通过`@Local`注解声明这个接口,并实现其方法。 4. **远程接口的SessionBean** ...

    EJB集群EJB集群资料

    在给定的示例中,我们看到一个简单的无状态会话Bean(Stateless Session Bean)`HelloWorldBean`,它实现了`HelloWorld`接口。无状态会话Bean适合处理不涉及会话状态的请求,因为它们不保存客户端之间的状态信息。在...

    eclipse + JBoss 5 + EJB3开发指南

    #### (8):JBoss EJB3(HelloWorld)备忘记 这部分提供了一个简单的HelloWorld示例,用于演示如何从头开始构建EJB项目。 总结起来,这篇教程涵盖了从配置开发环境到编写和测试Session Bean的所有基本步骤。它不仅...

    ejb3 第5讲--通过ANT提高EJB应用的开发效率

    在提供的`ejb3HelloWorld`示例中,我们可能看到一个简单的EJB 3.0应用,包含一个状态less session bean(如`HelloBean`)和对应的接口(如`Hello`)。这个例子通常会演示如何声明bean,如何注入依赖(如`@...

    ejb hellow world入门

    创建一个简单的EJB HelloWorld案例,我们需要以下步骤: 1. **创建EJB项目**:首先,我们需要一个支持Java EE的开发环境,如Eclipse或NetBeans,然后创建一个新的Java EE项目,并添加EJB模块。 2. **定义Bean类**...

    EJB3.0使用文档

    ### EJB 3.0 使用文档详解 #### 一、EJB 3.0 概述 企业 Java Beans (EJB) 是一种基于组件的企业级应用程序模型,它为开发复杂的应用程序提供了支持。EJB 3.0 版本引入了许多简化开发过程的新特性,比如对注解的...

    走出 JNDI 迷宫.pdf

    HelloWorld hw = home.create(); ``` 5. **调用方法**:最后,通过EJB实例调用所需的方法。 ```java System.out.println(hw.hello()); ``` #### 安全到家 尽管上述步骤提供了一种基本的方法来调用EJB组件,...

Global site tag (gtag.js) - Google Analytics