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(){}
}

你可能感兴趣的:(java,xml,bean,jboss,ejb)