Session Bean 依赖注入
1、新建依赖注入的接口
2、实现IInject接口
3、.注入还可以通过ejb-jar.xml来实现。有兴趣可以学习一下,感觉上声明方式的注入
是硬编码,不向xml这样灵活。
4、写个Test。
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(){}
}