EJB分为session bean、entity bean、message-driven bean,session bean又分为无状态会话bean和有状态会话bean。

session bean负责与client交互。是编写业务逻辑的地方,在session bean中能够通过jdbc直接操作数据库,但大多数情况下都是通过entity bean来完毕对数据库的操作的。

寻常,我们使用最多的是无状态bean,由于它的bean实例可供多个用户使用,所以它的性能比有状态bean高。正由于一个bean实例被多个用户使用。

那么。前一个用户设置的值有可能被后一个用户所改动,所以它无法正确保存某个用户设置的值,由于是无状态的。

以下用一个JBoss+Ant实现EJB无状态会话bean实例,帮助大家初步认识EJB。

1.创建一个普通的java项目。创建时引用jboss-4.2.3.GA\client文件夹下的全部jar包。

2.创建一个HelloWorld接口;

package cn.tgb.ejb3;

public interface HelloWorld {

	public String sayHelloWorld(String name);
}

3.创建一个实现HelloWorld接口的实现类;

package cn.tgb.ejb3.impl;

import javax.ejb.Remote;
import javax.ejb.Stateless; import cn.tgb.ejb3.HelloWorld; @Stateless
@Remote(HelloWorld.class)
public class HelloWorldBean implements HelloWorld { @Override
public String sayHelloWorld(String name) {
return name + "说:你好。世界! ";
}
}

在HelloWorldBean类中。我们用注解Stateless注明当前类是无状态的,用注解Remote注明当前类对外提供的远程訪问接口。

4.在项目的src文件夹下新建build.xml文件,用Ant管理项目的构建过程;

<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloWorld" basedir=".">
<property name="src.dir" value="${basedir}/src" />
<property name="build.dir" value="${basedir}/build" />
<property environment="env" />
<property name="jboss.home" value="${env.JBOSS_HOME}" />
<property name="jboss.server.config" value="default" />
<path id="build.classpath">
<fileset dir="${jboss.home}/client">
<include name="*.jar" />
</fileset>
</path>
<target name="prepare">
<delete dir="${build.dir}" />
<mkdir dir="${build.dir}" />
</target>
<target name="compile" depends="prepare" description="编译EJB工程">
<javac srcdir="${src.dir}" destdir="${build.dir}">
<classpath refid="build.classpath" />
</javac>
</target>
<target name="ejbjar" depends="compile" description="EJB工程打包">
<jar jarfile="${basedir}/${ant.project.name}.jar">
<fileset dir="${build.dir}">
<include name="**/*.class" />
</fileset>
</jar>
</target>
<target name="deploy" depends="ejbjar" description="公布EJB工程">
<copy file="${basedir}/${ant.project.name}.jar" todir="${jboss.home}/server/${jboss.server.config}/deploy" />
</target>
<target name="undeploy" description="卸载EJB">
<delete file="${jboss.home}/server/${jboss.server.config}/deploy/${ant.project.name}.jar" />
</target>
</project>

5.在eclipse的Outline窗体选中deploy,右键run as Ant build。运行此操作后,Ant会在当前项目根文件夹和jboss-4.2.3.GA\server\default\deploy文件夹生成项目的jar文件;

6.启动JBossserver;

7.在其他项目中通过JNDI调用EJB无状态会话bean提供的方法;

package com.tgb.test;

import java.util.Properties;

import javax.naming.InitialContext;
import javax.naming.NamingException; import cn.tgb.ejb3.HelloWorld; public class EJBClient { public static void main(String[] args) {
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
try {
InitialContext ctx = new InitialContext(props);
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
System.out.println(helloworld.sayHelloWorld("北京"));
} catch (NamingException e) {
System.out.println(e.getMessage());
}
}
}

到此,我们完毕了EJB无状态会话bean的实例创建过程,希望能帮助大家进步。

JBoss+Ant实现EJB无状态会话bean实例的更多相关文章

  1. EJB开发第一个无状态会话bean、开发EJBclient

    开发第一个无状态会话bean EJB中的三中bean: 会话Bean(Session Bean) 负责与client交互,是编写业务逻辑的地方.在会话bean中能够通过JDBC直接操作数据库.但大多数 ...

  2. EJB开发第一个无状态会话bean、开发EJB客户端

    开发第一个无状态会话bean EJB中的三中bean: 会话Bean(Session Bean) 负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过JDBC直接操作数据库,但大多数情况下 ...

  3. 无状态会话bean(1)---定义

    无状态会话bean用于完毕在单个方法的生命周期内的操作.无状态bean能够实现很多业务操作,可是每一个方法都不能假定不论什么其它的方法会在它之前调用.后半句的意思是如今的你可能不是刚才的你.明天的你可 ...

  4. 无状态会话Bean、有状态会话Bean、CMP与BMP中,哪一种Bean不需要自己书写连接数据库的代码?

    无状态会话Bean.有状态会话Bean.CMP与BMP中,哪一种Bean不需要自己书写连接数据库的代码? A.无状态会话Bean B.有状态会话Bean C.CMP D.BMP 解答:C

  5. 无状态会话bean(3)---远程业务接口(没有排版)

    迄今为止,我们仅仅讨论了使用一个本地业务接口的会话bean.在这样的情况下.本地意味着仅仅能由执行在同一个应用程序server实例的JavaEE组件声明会话bean的依赖性.比如.远程client不可 ...

  6. (转)Spring Bean Scope 有状态的Bean 无状态的Bean

    有状态会话bean   :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”:一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束.即每个用户最初都会得到一 ...

  7. 有状态的bean和无状态的bean的区别

    有状态会话bean :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”:一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束.即每个用户最初都会得到一个初 ...

  8. 有状态无状态回话bean

    1.有状态(Stateful) 可以在不同的方法调用间保持针对各个客户端的状态 与客户端的联系必须被维持,这样做开销要大一些 有状态也可以这样理解,它存在存储能力,也就是说至少有一个属性来标识它目前的 ...

  9. Ejb in action(四)——购物车实例演示有状态会话Bean

    前面.我们介绍了一个入门实例.事实上那就是无状态回话Bean的经常使用情况. 上一篇文章中.我们介绍了无状态会话Bean和有状态会话Bean的相关概念.为了加深大家对它们的理解,我们一起来实现一个有状 ...

随机推荐

  1. C语言程序设计(翁恺)--第三周课件中的三个遗留点

    刚刚写完第二周遗留点,下面写第三周的 第三周:判断 1.if和else后面也可以没有{}而是一条语句.如果if后不带{},但是后面跟了两条语句,并且后面还有else语句,那么程序会怎么执行? 在Dev ...

  2. SQL Server 改变数据库的名字

    方法 1: alter database modiry name = new_database_name; ---------------------------------------------- ...

  3. 可爱的 Python : Python中函数式编程,第二部分

    英文原文:Charming Python: Functional programming in Python, Part 2,翻译:开源中国 摘要:  本专栏继续让David对Python中的函数式编 ...

  4. WebView cookies清理

    今天在项目中发现一个BUG 在使用新浪微博账户登录应用时,webview会自动登录上次的微博帐号!(因为webview 记录了微博帐号和密码的cookies) 所以,需要清除SessionCookie ...

  5. 使用jpeglib库实现bmp转jpg

    一.vc编译jpeglib库 1.下载源代码 下载地址:http://www.ijg.org/.注意:一定要下载win32 版本 2.编译源代码. A.解压源代码,修改源代码中jconfig.vc为j ...

  6. hdu 2769 uva 12169 Disgruntled Judge 拓展欧几里德

    //数据是有多水 连 10^10的枚举都能过 关于拓展欧几里德:大概就是x1=y2,y1=x2-[a/b]y2,按这个规律递归到gcd(a,0)的形式,此时公因数为a,方程也变为a*x+0*y=gcd ...

  7. Windows下使用XManager访问Ubuntu 11.04的设置方法

    1.Download the attached file and upload it to the server. And, enter the following command to update ...

  8. getBoundingClientRect()来获取页面元素的位置”

    getBoundingClientRect()来获取页面元素的位置” 获取的是一个对象; 延伸阅读; https://mp.weixin.qq.com/s?__biz=MzAxODE2MjM1MA== ...

  9. mysql中使用正则表达式时的注意事项

    mysql不支持\d元字符匹配数字 mysql不支持向前.向后查找 regexp不能和not搭配使用

  10. Shortest Path(思维,dfs)

    Shortest Path  Accepts: 40  Submissions: 610  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit: ...