`

远程调用ejb3

    博客分类:
  • EJB
阅读更多

总结下远程调用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:7001</prop>  
  5.                 <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>  
  6.                 <prop key="java.naming.security.principal">weblogic</prop>  
  7.                 <prop key="java.naming.security.credentials">weblogic</prop>  
  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分布式远程调用的小例子的简单实现

    本示例将探讨如何实现EJB的分布式远程调用,这是一种让不同网络节点上的软件组件能够相互通信的技术。 在Java EE中,EJB允许开发者创建业务逻辑组件,这些组件可以被其他应用或服务远程调用。EJB分为三种类型:会话...

    EJB客户端(远程调用)

    调用EJB的客户端程序,通过远程接口方式调用

    EJB client调用EJB3 .doc

    在独立的Tomcat或J2SE环境中,由于不在同一个虚拟机(VM)中,只能调用EJB的远程接口,而不能调用本地接口。 另外,除了代码中硬编码环境属性,还可以在classpath下放置一个名为`jndi.properties`的文件来设置...

    JNDI调用分布式EJB3 通用接口

    5. **调用EJB3方法**:通过代理对象,客户端可以像调用本地方法一样调用EJB3组件的方法,所有的网络通信和事务管理都在后台自动处理。 6. **分布式EJB3**:如果EJB3组件部署在多个服务器上,JNDI查找可能返回一个...

    ejb调用详解

    本文将深入探讨如何在WebSphere环境中远程调用EJB组件,同时介绍ejb3.0版本的一些关键特性,以及 ejb 开发实例和相关框架。 **一、EJB 3.0简介** EJB 3.0是EJB规范的一个重大改革,引入了更加轻量级和简化的设计,...

    基于Facade的EJB远程调用技术

    基于Facade的EJB远程调用技术 基于Facade的EJB远程调用技术

    三种方式实现java远程调用(rmi),绝对可用

    Java远程调用(Remote Method Invocation,RMI)是Java平台中一种重要的分布式计算技术,它允许在不同网络环境中的Java对象之间进行透明的交互。在本文中,我们将深入探讨三种不同的RMI实现方法:原始方式、Spring...

    EJB 基于Java的远程方法调用(RMI)技术

    ### EJB 基于Java的远程方法调用(RMI)技术 #### 一、EJB概述 **Enterprise JavaBeans (EJB)** 是一种基于Java的...此外,通过RMI技术的支持,EJB能够实现高效的远程调用,使得跨系统的组件交互变得更加简单高效。

    基于动态代理的Java远程调用框架的研究1

    总结起来,基于动态代理的Java远程调用框架旨在克服RMI和EJB的一些缺点,提供更加简洁、灵活和高效的远程调用解决方案。它利用Java的动态代理特性,降低了分布式系统开发的复杂性,同时保持了高度的可扩展性和可定制...

    tomcat 调用weblogic EJB

    这是在采用WebLogic作为EJB容器时,远程调用EJB的一种常见模式。初学者可以通过这种方式熟悉基本的远程调用流程。 6. **注意事项** - 在实际部署过程中,需要注意EJB的版本兼容性问题,以及安全认证机制。例如,...

    各种EJB之间的调用示例

    - Remote Method Invocation(RMI):这是EJB之间最基础的调用方式,允许一个EJB实例调用另一个EJB的远程接口方法。 - Local Interface:如果调用方和被调用的EJB在同一应用服务器内,可以使用本地接口,这样可以...

    EJB调用原理分析

    3. **调用业务方法**: 客户端通过Remote接口调用EJB的业务方法。对于Entity Bean,客户端通常通过查找来获取现有对象,而不是创建。 4. **容器管理**: EJB容器在调用实际的bean实例前,会进行一系列容器管理操作,如...

    CORBA Client/Server调用EJB开发说明,带有例子学习

    总结来说,这个教程提供了使用C++通过CORBA调用EJB的详细步骤,包括生成IDL文件、创建C++ Stub、初始化ORB、解析和调用EJB方法。理解这个过程对于开发者来说是至关重要的,因为它涉及到多个中间件技术的集成,包括...

    JSP调用EJB例子[归类].pdf

    其中,HaiHome接口代表EJB的远程接口,允许客户端通过RMI(Remote Method Invocation)调用EJB;HaiClient接口是会话bean的本地接口,提供了具体业务方法的定义;HaiBean类实现了会话bean的业务逻辑。 2. WEB应用:...

    使用rmi进行远程调用

    在这个“使用rmi进行远程调用”的示例中,我们看到的是一个基于RMI实现的银行系统。这个小例子旨在帮助开发者理解如何使用RMI来构建分布式应用程序,尤其是在处理跨网络的远程对象交互时。 首先,RMI的核心概念是...

    实战角度比较EJB2和EJB3的架构异同

    因此,即使在EJB3中,理解JNDI名称的生成规则仍然很重要,因为它直接影响到EJB的查找和调用。 综上所述,EJB3相对于EJB2的主要改进在于简化了编程模型,通过注解减少了冗余代码,并引入了依赖注入以提高代码的...

    (sshproject)tomcat调用jboss上的ejb3.0

    4. **远程调用EJB**: - 使用JNDI查找服务来获取远程EJB的引用。在Tomcat应用中,你可以使用JNDI API来查找Jboss上的EJB,然后通过这个引用调用EJB的方法。 - 调用EJB时,注意处理可能出现的网络异常、远程方法...

    \websphere部署EJB3.docx

    创建一个或多个EJB项目,例如`EJB3`,每个EJB项目都将对应一个jar包,建议遵循命名规范,如`XXXEJBModule.jar`。同样,这些EJB项目也需要添加到`WEBEJB3`项目中。 4. **部署到WebSphere**: 使用RAD,可以直接...

Global site tag (gtag.js) - Google Analytics