EJB3 学习笔记四
来源:互联网 发布:eclipse js编辑器插件 编辑:程序博客网 时间:2024/05/17 07:24
开发有状态bean,示例代码如下:
// 指定有状态bean
@Stateful
无状态bean使用实例池管理bean
有状态bean使用激活(activation)管理bean(为每一个用户创建一个bean,应用求场景:如购物车)
在ejb中调用其他ejb有以两种方式:
1 通过jndi查找的方式
????????????未实现,需查找jndi查找方法
2 通过注解方式注入并使用其他ejb或者服务,示例代码如下:
/**
* Copyright (C) 2016
*
* FileName:Second.java
*
* Author:<a href="mailto:zhenhuayue@sina.com">Retacn</a>
*
* CreateTime: 2016-7-21
*/
// Package Information
package cn.yue.ejb.bean;
/**
* 测试其他 ejb的调用,被调用接口
*
* @version
* @Description:
* @author <ahref="mailto:zhenhuayue@sina.com">Retacn</a>
* @since 2016-7-21
*/
public interface Second {
public String saySecond();
}
/**
* Copyright (C) 2016
*
* FileName:SecondBean.java
*
* Author:<ahref="mailto:zhenhuayue@sina.com">Retacn</a>
*
* CreateTime: 2016-7-21
*/
// Package Information
package cn.yue.ejb.bean;
import javax.ejb.Local;
import javax.ejb.Stateless;
/**
* 测试调用其他ejb,被调用bean
*
* @version
* @Description:
* @author <ahref="mailto:zhenhuayue@sina.com">Retacn</a>
* @since 2016-7-21
*/
// 指定为无状态 bean
@Stateless
// 指定为本地接口
@Local(Second.class)
public class SecondBean implementsSecond {
@Override
public String saySecond() {
return "second";
}
}
/**
* Copyright (C) 2015
*
* FileName:HelloWorldBean.java
*
* Author:<a href="mailto:zhenhuayue@sina.com">Retacn</a>
*
* CreateTime: 2015-1-14
*/
// Package Information
package cn.yue.ejb.bean;
import java.util.Hashtable;
import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
//import javax.ejb.Stateless;
/**
* 实现业务接口 并添加两个注释 测试调用其他ejb
*
* @version
* @Description:
* @author<ahref="mailto:zhenhuayue@sina.com">Retacn</a>
* @since 2015-1-14
*/
// 指定为无状态会话bean
@Stateless
// 指定有状态bean
// @Stateful
// 指定远程接口
@Remote(RemoteHelloWorld.class)
// 指定为本地接口
@Local(LocalHelloWorld.class)
publicclass HelloWorldBeanimplements LocalHelloWorld, RemoteHelloWorld {
@EJB(beanName = "SecondBean")
Second second;
@Override
public String SayHello(String name) {
// try {
// Properties props = newProperties();
//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");
//
// InitialContext ctx;
// ctx = newInitialContext(props);
// HelloWorld helloworld =(HelloWorld)
//ctx.lookup("HelloWorldBean/romote");
// // out.println(helloworld.SayHello("retacn"));
// } catch (NamingException e) {
// e.printStackTrace();
// }
// 调用其他ejb有两种方式:
// 1 通过jndi查找
// try {
//System.out.println("start-----");
// System.out.println("调用其他ejb: " + callByJndi().saySecond());
// } catch (NamingException e) {
//System.out.println("exception-----");
// e.printStackTrace();
// }
//System.out.println("end----");
// 2 通过依赖注入
return name +" say:hello world! this ismy first EJB test! " +second.saySecond();
}
@Override
public String localSay(String name) {
return"local---" + name +" say:hello world! this ismy first EJB test!";
}
@SuppressWarnings("unchecked")
public Second callByJndi()throws NamingException {
@SuppressWarnings("rawtypes")
final Hashtable jndiProperties =new Hashtable();
jndiProperties.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");
final Context context =new InitialContext(jndiProperties);
// 如果服务器布署的是.ear包,则appname为.ear之后的包名,如果的war或是jar包,appName可以为空
final String appName ="";
final String moduleName ="HelloWorldEJB";
final String distinctName ="";
final String beanName ="SecondBean";
final String viewClassName = Second.class.getName();
final String namespace ="ejb: " + appName + "/" + moduleName + "/" + distinctName
+ "/"
+ beanName + "!" + viewClassName;
System.out.println("调用其他ejb,namespace:" + namespace);
Second second = (Second)context.lookup(namespace);
return second;
}
}
- EJB3 学习笔记四
- EJB3.0学习笔记之四 依赖注入(dependency injection)
- ejb3.0学习笔记
- EJB3学习笔记_JPA
- EJB3.0学习笔记
- EJB3 学习笔记一
- EJB3 学习笔记二
- EJB3 学习笔记三
- EJB3 学习笔记五
- EJB3 学习笔记六
- EJB3 学习笔记七
- EJB3 学习笔记八
- EJB3.0学习笔记之一
- 传智播客 EJB3 学习笔记1
- 传智播客 EJB3 学习笔记2
- 传智播客 EJB3 学习笔记3
- 传智播客 EJB3 学习笔记4
- EJB3实体bean学习笔记
- [第一类斯特林数 组合] HDU 4372 Count the Buildings
- Java实现矩阵加减乘除转制等运算
- Python的with内部原理解析
- NYOJ-【士兵杀敌(一)】
- c#json如何格式化日期和时间
- EJB3 学习笔记四
- webView加载html
- navicat将sqlserver数据库导入到mysql数据库,无法打开文件问题
- 数据结构实验之排序一:一趟快排
- UVA - 297 Quadtrees(四分图)
- EJB3 学习笔记五
- SQL注入攻防(PHP语法)
- 用VBA批量替换多个Word文档中同一内容
- PowerDesigner中的继承方式