总结下远程调用ejb3的几种方式:
部署在jboss服务器上的ejb3应用程序:
-
-
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);
-
-
IRmiExampleSerivce rmiSerivce = (IRmiExampleSerivce)ctx.lookup("IRmiExampleSerivceImpl/remote");
-
} catch (NamingException e) {
-
- e.printStackTrace();
- }
/*设置属性信息*/
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应用:
-
-
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);
-
-
IRmiExampleSerivce rmiSerivce = (IRmiExampleSerivce)ctx.lookup("IRmiExampleSerivce#com.rmi.IRmiExampleSerivce");
-
} catch (NamingException e) {
-
- e.printStackTrace();
- }
/*设置属性信息*/
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属性文件中,如:
- 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
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的实例,例如:
- <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
-
<property name="environment">
-
<props>
-
<prop key="java.naming.provider.url">t3://127.0.0.1:7001</prop>
-
<prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
-
<prop key="java.naming.security.principal">weblogic</prop>
-
<prop key="java.naming.security.credentials">weblogic</prop>
-
</props>
-
</property>
-
</bean>
-
-
<bean id="rmiExampleSerivce" class="org.springframework.jndi.JndiObjectFactoryBean">
-
<property name="jndiTemplate" ref="jndiTemplate"/>
-
<property name="jndiName" value="IRmiExampleSerivce#com.rmi.IRmiExampleSerivce"></property>
-
</bean>
http://lym6520.iteye.com/blog/941758
分享到:
相关推荐
本示例将探讨如何实现EJB的分布式远程调用,这是一种让不同网络节点上的软件组件能够相互通信的技术。 在Java EE中,EJB允许开发者创建业务逻辑组件,这些组件可以被其他应用或服务远程调用。EJB分为三种类型:会话...
调用EJB的客户端程序,通过远程接口方式调用
在独立的Tomcat或J2SE环境中,由于不在同一个虚拟机(VM)中,只能调用EJB的远程接口,而不能调用本地接口。 另外,除了代码中硬编码环境属性,还可以在classpath下放置一个名为`jndi.properties`的文件来设置...
5. **调用EJB3方法**:通过代理对象,客户端可以像调用本地方法一样调用EJB3组件的方法,所有的网络通信和事务管理都在后台自动处理。 6. **分布式EJB3**:如果EJB3组件部署在多个服务器上,JNDI查找可能返回一个...
本文将深入探讨如何在WebSphere环境中远程调用EJB组件,同时介绍ejb3.0版本的一些关键特性,以及 ejb 开发实例和相关框架。 **一、EJB 3.0简介** EJB 3.0是EJB规范的一个重大改革,引入了更加轻量级和简化的设计,...
基于Facade的EJB远程调用技术 基于Facade的EJB远程调用技术
Java远程调用(Remote Method Invocation,RMI)是Java平台中一种重要的分布式计算技术,它允许在不同网络环境中的Java对象之间进行透明的交互。在本文中,我们将深入探讨三种不同的RMI实现方法:原始方式、Spring...
### EJB 基于Java的远程方法调用(RMI)技术 #### 一、EJB概述 **Enterprise JavaBeans (EJB)** 是一种基于Java的...此外,通过RMI技术的支持,EJB能够实现高效的远程调用,使得跨系统的组件交互变得更加简单高效。
总结起来,基于动态代理的Java远程调用框架旨在克服RMI和EJB的一些缺点,提供更加简洁、灵活和高效的远程调用解决方案。它利用Java的动态代理特性,降低了分布式系统开发的复杂性,同时保持了高度的可扩展性和可定制...
这是在采用WebLogic作为EJB容器时,远程调用EJB的一种常见模式。初学者可以通过这种方式熟悉基本的远程调用流程。 6. **注意事项** - 在实际部署过程中,需要注意EJB的版本兼容性问题,以及安全认证机制。例如,...
- Remote Method Invocation(RMI):这是EJB之间最基础的调用方式,允许一个EJB实例调用另一个EJB的远程接口方法。 - Local Interface:如果调用方和被调用的EJB在同一应用服务器内,可以使用本地接口,这样可以...
3. **调用业务方法**: 客户端通过Remote接口调用EJB的业务方法。对于Entity Bean,客户端通常通过查找来获取现有对象,而不是创建。 4. **容器管理**: EJB容器在调用实际的bean实例前,会进行一系列容器管理操作,如...
总结来说,这个教程提供了使用C++通过CORBA调用EJB的详细步骤,包括生成IDL文件、创建C++ Stub、初始化ORB、解析和调用EJB方法。理解这个过程对于开发者来说是至关重要的,因为它涉及到多个中间件技术的集成,包括...
其中,HaiHome接口代表EJB的远程接口,允许客户端通过RMI(Remote Method Invocation)调用EJB;HaiClient接口是会话bean的本地接口,提供了具体业务方法的定义;HaiBean类实现了会话bean的业务逻辑。 2. WEB应用:...
在这个“使用rmi进行远程调用”的示例中,我们看到的是一个基于RMI实现的银行系统。这个小例子旨在帮助开发者理解如何使用RMI来构建分布式应用程序,尤其是在处理跨网络的远程对象交互时。 首先,RMI的核心概念是...
因此,即使在EJB3中,理解JNDI名称的生成规则仍然很重要,因为它直接影响到EJB的查找和调用。 综上所述,EJB3相对于EJB2的主要改进在于简化了编程模型,通过注解减少了冗余代码,并引入了依赖注入以提高代码的...
4. **远程调用EJB**: - 使用JNDI查找服务来获取远程EJB的引用。在Tomcat应用中,你可以使用JNDI API来查找Jboss上的EJB,然后通过这个引用调用EJB的方法。 - 调用EJB时,注意处理可能出现的网络异常、远程方法...
创建一个或多个EJB项目,例如`EJB3`,每个EJB项目都将对应一个jar包,建议遵循命名规范,如`XXXEJBModule.jar`。同样,这些EJB项目也需要添加到`WEBEJB3`项目中。 4. **部署到WebSphere**: 使用RAD,可以直接...