Ejb3.0--3

Session Bean 依赖注入

1、新建依赖注入的接口
package com.chenzhq.injection;

import javax.ejb.Remote;

import com.chenzhq.ejb.HelloWorldRemote;

@Remote({IInject.class})

public interface IInject {

public HelloWorldRemote getHelloWorld();
}

2、实现IInject接口
/*
* @author chenzhq
*/
package com.chenzhq.injection;

import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Remote;
import javax.ejb.SessionContext;
import javax.ejb.Stateful;

import com.chenzhq.ejb.HelloWorldRemote;

@Stateful
@Remote ({IInject.class})
public class InjectHelloWorld implements IInject {
/*
* EJB声明是使用方法。
* @EJB (name="HelloWorldLocal") name属性是指定需要注入的bean的名字,不需要带包名字。
* @EJB (mappedName = "HelloWorldRemote")mappedName属性是在Jndi的范围内寻找你的部署的资源,属性值是资源的jndi的名字
*/
@EJB private HelloWorldRemote hw;
/*
* Resource的使用方法和EJB的使用大体是一样的,只是注入的资源不一样,Resource是针对Jndi树上的所有资源的。
*
*/
@Resource private SessionContext sc;
private HelloWorldRemote hwr;

public HelloWorldRemote getHelloWorld() {
// TODO Auto-generated method stub
return hwr;
}

}

3、.注入还可以通过ejb-jar.xml来实现。有兴趣可以学习一下,感觉上声明方式的注入
是硬编码,不向xml这样灵活。
4、写个Test。
package com.chenzhq.test;

import java.util.Properties;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.persistence.EntityManagerFactory;
import javax.rmi.PortableRemoteObject;

import com.chenzhq.ejb.HelloWorldRemote;
import com.chenzhq.injection.IInject;

public class Test {

/**
* @param args
*/
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", "jnp://192.168.40.241:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");

try {

InitialContext ic = new InitialContext(props);
//IInject iinject = (IInject)
//HelloWorldRemote hwr =(HelloWorldRemote)ic.lookup("HelloWorld/remote");
IInject ii = (IInject)ic.lookup("InjectHelloWorld/remote");
//System.out.println(hwr.toString());
//System.out.println(hwr.say("chenzhq"));
//PortableRemoteObject pro;
//EntityManagerFactory emf;
//PortableLocalObject plo;
HelloWorldRemote hwr = iinject.getHelloWorld();
System.out.println(hwr.say("chenzhq"));

} catch (NamingException e) {
// TODO Auto-generated catch block
System.out.print(e);
e.printStackTrace();
}

//


}

public void test(){}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值