远程调用ejb3

总结下远程调用ejb3的几种方式:

部署在jboss服务器上的ejb3应用程序:

Java代码  
  1. /*设置属性信息*/  
  2.         Properties props = new Properties();   
  3.         props.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");   
  4.         props.put(Context.PROVIDER_URL, "jnp://localhost:1099");//部署在jboss服务器上的应用使用jnp协议   
  5.         props.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");   
  6.            
  7.         try {   
  8.             InitialContext ctx=new InitialContext(props);   
  9.             /* 获得部署在Jboss服务器上的ejb3应用接口实例*/  
  10.             IRmiExampleSerivce rmiSerivce = (IRmiExampleSerivce)ctx.lookup("IRmiExampleSerivceImpl/remote"); //不同的服务器jndi名称不一样   
  11.         } catch (NamingException e) {   
  12.             // TODO Auto-generated catch block   
  13.             e.printStackTrace();   
  14.         }  
/*设置属性信息*/
		Properties props = new Properties();
 		props.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
 		props.put(Context.PROVIDER_URL, "jnp://localhost:1099");//部署在jboss服务器上的应用使用jnp协议
 		props.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
 		
 		try {
			InitialContext ctx=new InitialContext(props);
			/* 获得部署在Jboss服务器上的ejb3应用接口实例*/
			IRmiExampleSerivce rmiSerivce = (IRmiExampleSerivce)ctx.lookup("IRmiExampleSerivceImpl/remote"); //不同的服务器jndi名称不一样
 		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}



部署在weblogic服务器上的ejb3应用:

Java代码  
  1. /*设置属性信息*/  
  2.         Properties props = new Properties();   
  3.         props.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");   
  4.         props.put(Context.PROVIDER_URL, "t3://127.0.0.1:7001");//部署在weblogic服务器上的应用使用t3协议   
  5.         props.put("java.naming.security.principal""weblogic");//用户名   
  6.         props.put("java.naming.security.credentials""weblogic");//密码   
  7.            
  8.         try {   
  9.             InitialContext ctx=new InitialContext(props);   
  10.             /* 获得部署在Jboss服务器上的ejb3应用接口实例*/  
  11.             IRmiExampleSerivce rmiSerivce = (IRmiExampleSerivce)ctx.lookup("IRmiExampleSerivce#com.rmi.IRmiExampleSerivce"); //不同的服务器jndi名称不一样   
  12.         } catch (NamingException e) {   
  13.             // TODO Auto-generated catch block   
  14.             e.printStackTrace();   
  15.         }  
/*设置属性信息*/
		Properties props = new Properties();
		props.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
 		props.put(Context.PROVIDER_URL, "t3://127.0.0.1:7001");//部署在weblogic服务器上的应用使用t3协议
 		props.put("java.naming.security.principal", "weblogic");//用户名
 		props.put("java.naming.security.credentials", "weblogic");//密码
 		
 		try {
			InitialContext ctx=new InitialContext(props);
			/* 获得部署在Jboss服务器上的ejb3应用接口实例*/
			IRmiExampleSerivce rmiSerivce = (IRmiExampleSerivce)ctx.lookup("IRmiExampleSerivce#com.rmi.IRmiExampleSerivce"); //不同的服务器jndi名称不一样
 		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}



当然属性信息可以放在一个jndi.properties属性文件中,如:

Properties代码  
  1. java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory   
  2. java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces   
  3. java.naming.provider.url=localhost:1099  
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099


当然该文件放在src根目录下,然后我们在程序中就无需创建Properties的实例并设置相关熟悉,可以直接实例化InitialContext,调用默认的实例化构造函数,会默认查找src根目录下的jndi.properties属性文件。

当然在实际开发应用中不会直接通过以上方式来直接调用远程ejb3服务,在spring框架中可以通过JndiObjectFactoryBean来获得远程ejb3的实例,例如:

Xml代码  
  1. <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">  
  2.         <property name="environment">  
  3.             <props>  
  4.                 <prop key="java.naming.provider.url">t3://127.0.0.1:7001prop>  
  5.                 <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactoryprop>  
  6.                 <prop key="java.naming.security.principal">weblogicprop>  
  7.                 <prop key="java.naming.security.credentials">weblogicprop>  
  8.             props>  
  9.         property>  
  10.     bean>  
  11.         
  12.     <bean id="rmiExampleSerivce" class="org.springframework.jndi.JndiObjectFactoryBean">  
  13.         <property name="jndiTemplate" ref="jndiTemplate"/>  
  14.         <property name="jndiName" value="IRmiExampleSerivce#com.rmi.IRmiExampleSerivce">property>  
  15.     bean>  

http://lym6520.iteye.com/blog/941758

你可能感兴趣的:(EJB)