有状态、无状态会话bean开发例子

EJB的开发,首先要在jboss安装路径的client目录下找到,通常会把client目录下的所有jar文件添加到项目的类路径下.

编写一个接口,之后再编写一个实现该接口的类。下面的例子有bean间的调用,代码中有详细的注解

例子:

1、编写接口

ContractedBlock.gif ExpandedBlockStart.gif Other
package com.tjp.ejb3;

public interface Other {

public String say(String str);
}
ContractedBlock.gif ExpandedBlockStart.gif HelloWord
package com.tjp.ejb3;

public interface HelloWord {

public String sayHello(String str);
}
ContractedBlock.gif ExpandedBlockStart.gif HelloWordLocal
package com.tjp.ejb3;

public interface HelloWordLocal extends HelloWord {

}

2、编写实现类

ContractedBlock.gif ExpandedBlockStart.gif OtherBean
package com.tjp.ejb3.impl;

import javax.ejb.Stateless;

import com.tjp.ejb3.Other;

/**
*
* 无状态bean
* 默认为本地接口
*
@author TanJianping
*
*/
@Stateless
public class OtherBean implements Other {

@Override
public String say(String str) {
// TODO Auto-generated method stub
return str;
}

}
ContractedBlock.gif ExpandedBlockStart.gif HelloWordBean
package com.tjp.ejb3.impl;

import javax.activation.DataSource;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateful;
import javax.ejb.Stateless;
import javax.naming.InitialContext;

import org.omg.CosTime.TimeService;

import com.tjp.ejb3.HelloWord;
import com.tjp.ejb3.HelloWordLocal;
import com.tjp.ejb3.Other;

/**
*
* @Stateless 无状态bean , @Stateful为有状态bean
* @Remote(HelloWord.class) HelloWord为远程接口,如果这个不写则为本地接口
* @Local(HelloWordLocal.class) 本地接口
*
@author TanJianping
*
*/
@Stateful
@Remote(HelloWord.
class)
@Local(HelloWordLocal.
class)
public class HelloWordBean implements HelloWord,HelloWordLocal {

@EJB(beanName
="OtherBean/local")
Other other;
//使用注解的方式注入别的EJB

@Resource TimeService timeService;
//定时服务 Resource引入别的服务
@Resource(mappedName="java:xxx") DataSource dataSource; //引用数据源

@Override
public String sayHello(String str){

/*try {
InitialContext ctx = new InitialContext();//通过属性文件
Other other = (Other) ctx.lookup("OtherBean/local");
return "other说: "+other.say(str);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*/
return "other说: "+other.say(str);
}

}
ContractedBlock.gif ExpandedBlockStart.gif build.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- name为项目名称 basedir项目所在目录,1个点为项目在build.xml同一目录,2个点位build.xml的上级目录 -->
<project name="helloEjb" basedir=".">
<!-- 指定项目源文件所在的目录 ${basedir}表示源目录在项目的src下面 -->
<property name="src.dir" value="${basedir}/src" />
<!-- 指向到操作系统的环境变量 environment="env" -->
<property environment="env" />
<!--${env.JBOSS_HOME} JBOOS的环境变量即安装目录 -->
<property name="jboss.home" value="${env.JBOSS_HOME}" />
<!-- 目前使用的JBOSS使用的配置项 -->
<property name="jboss.server.config" value="default" />
<!-- ${basedir}/build 编译源文件class存放的目录 -->
<property name="build.dir" value="${basedir}/build" />

<path id="build.classpath">
<!-- 将JBOSS下client的所有的jar包 -->
<fileset dir="${jboss.home}/client">
<include name="*.jar" />
</fileset>
<pathelement location="${build.dir}" />
</path>

<!-- 定义1个工作,用于创建class文件存放的目录 -->
<target name="prepare">
<delete dir="${build.dir}" />
<mkdir dir="${build.dir}" />
</target>

<!-- depends="prepare" 先执行prepare这个任务 -->
<target name="compile" depends="prepare" description="编译">
<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" />
</target>
</project>

转载于:https://www.cnblogs.com/tjpfly/archive/2011/07/20/2112254.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值