EJB实例教程笔记(三)
电子书EJB3实例教程byLiHuoming.pdf笔记
2.11 依赖注入(dependency injection)
在 传统的开发中,我们要使用某个类对象,可以通过new object来得到。但是在EJB中,需要通过JNDI查找或注入注释。
接口类Injection.java:
package com.sillycat.ejb;
public interface Injection {
public String sayHello();
}
EJB类InjectionBean.java如下:
package com.sillycat.ejb.impl;
import javax.ejb.EJB;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import com.sillycat.ejb.HelloWorld;
import com.sillycat.ejb.Injection;
@Stateless
@Remote(Injection.class)
public class InjectionBean implements Injection{
@EJB (beanName="HelloWorldBean") HelloWorld helloWorld;
public String sayHello() {
return helloWorld.SayHello("注入类");
}
}
其中的@EJB beanName引入类另外一个EJB,helloBean。
我的测试类InjectionTest.java如下:
package com.sillycat.ejb;
import javax.naming.InitialContext;
import org.junit.BeforeClass;
import org.junit.Test;
public class InjectionTest {
protected static Injection injection;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
InitialContext ctx = new InitialContext();
injection = (Injection) ctx.lookup("InjectionBean/remote");
}
@Test
public void testSayHello() {
injection.sayHello();
}
}
@EJB注释除了可以标注字段,还可以标示到属性的setter方法上,比如替换成如下写法:
private HelloWorld helloWorld;
@EJB(beanName = "HelloWorldBean")
public void setHelloWorld(HelloWorld helloWorld) {
this.helloWorld = helloWorld;
}
如果注入的EJB在不同的jar,那么装载次序就有要求,不然要报找不到类。需要修改配置文件:
JBOSS_HOME/server/default/conf/jboss-service.xml找到里面的
<!--
<attribute name="URLComparator">org.jboss.deployment.DeploymentSorter</attribute>
-->
<attribute name="URLComparator">org.jboss.deployment.scanner.PrefixDeploymentSorter</attribute>
然后给jar文件编号,格式为:01_XXXX.jar, 02_XXXX.jar,JBOSS将根据编号从小到大的顺序发布。
2.11.1 资源类型的注入
注入DataSource
@Resource(mappedName="java:/DefaultMySqlDS") DataSource myDb;
注入DataSource带验证
@Resource(mappedName="java:/DefaultMySqlDS",authenticationType=AuthenticationType.APPLICATION) DataSource myDB
使用的时候要这样:
Connection conn = null;
conn = myDb.getConnection("root","*****");
注入事物类
@Resource private javax.transaction.UserTransaction utx;
注入时间服务
@Resource private javax.ejb.TimerService tms;
注入SessionContext
@Resource private javax.ejb.SessionContext ctx;
注入消息工厂
@Resource(mappedName="QueueConnectionFactory")
private javax.jms.QueueConnectionFactory factory;
注入消息连接地址
@Resource(mappedName="queue/mail")
private javax.jms.Queue queue;
2.11.2 注入与继承关系
InjectionBean注入了HelloWorld
那么public class SubInjectionBean extends InjectionBean 会默认也注入HelloWorld
2.11.3 自定义注入注释
2.12 定时服务(Timer Service)
分享到:
相关推荐
EJB实例教程黎活明EJB实例教程黎活明EJB实例教程黎活明EJB实例教程黎活明EJB实例教程黎活明EJB实例教程黎活明
EJB3实例教程EJB3实例教程EJB3实例教程EJB3实例教程EJB3实例教程EJB3实例教程EJB3实例教程EJB3实例教程
EJB 3.0实例教程.pdf EJB 3.0实例教程.pdf
EJB30实例教程EJB30实例教程EJB30实例教程EJB30实例教程
ejb3.0实例教程.pdfejb3.0实例教程.pdf
EJB全实例教程
EJB3.0实例教程 博文链接:https://brxonline.iteye.com/blog/153889
EJB3实例教程 是一个教程 EJB3实例教程 是一个教程 EJB3实例教程 是一个教程
ejb3.0实例教程 ejb3.0实例教程 ejb3.0实例教程 ejb3.0实例教程 ejb3.0实例教程
EJB 3.0 实例教程-随书源码,所有源码都在里面。简单易懂,深入浅出,欢迎下载
黎活明EJB3.0实例教程,及源代码,全套资源
EJB3.0实例教程,电子文档,图例很丰富的进行EJB3.0程序的开发
电子书-EJB3.0实例教程 不错的一本书,看看吧!
EJB实例教程,入门系列,简单好懂,方便初学人员
压缩包中包含:EJB3.0实例教程 JPA教程 实战EJB三本电子书,都是不错的学习资料。
EJB3实例教程 EJB3实例教程EJB3实例教程
中文最新EJB3.0实例教程 博文链接:https://yongzhao.iteye.com/blog/44254
这里有2本书,一本是实例教程,一本是英文的精通EJB3.0,想学EJB的就来下吧