总结下远程调用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调用分为远程调用和本地调用两种,本文档描述了远程调用EJB方法。图文并茂,易于理解
调用EJB的客户端程序,通过远程接口方式调用
EJB分布式远程调用的小例子的简单实现。[附源码]
基于Facade的EJB远程调用技术 基于Facade的EJB远程调用技术
主要讲解了如何远程调用websphare中的ejb组建,以及ejb开发实例,ejb开发框架等
Enterprise Java Bean 相当于DCOM,即分布式组件
Tomcat下web工程调用JBOSS部署的EJB项目 此源码包 包括local本地调用及remote远程调用 文档说明在http://blog.csdn.net/heardy/article/details/6906225
Java如何在多个EJB之间相互调用的例子,也就是各种EJB之间的调用例子,向初学者演示如何实现调用的具体代码及步骤,涉及以下相关方法:用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB。...
各种EJB之间的调用源码示例,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB
3)其他的EJB, 4)其他通过Web Service 调用的客户端; 4, EJB容器可以为我们提供的服务: 1) 事务:够用 2)安全:不够用 3)资源管理和组件的声明周期的管理; 4)远程的调用:屏蔽了很多细节 5)并发请求 ( EJB都是单...
Tomcat6远程调用GlassFish V2的session bean GlassFish V2 是一个比较完整的ejb3服务器,性能也有了很大的提高,因此最近试用了一下,并通过Tomcat进行了分布式调用。 Session Bean: ...
远程方法调用发展到现在,已经有以下几种框架实现:DCE/RPC,CORBA,DCOM,MTS/COM+,Java RMI,Java EJB,Web Services/SOAP/XML-RPC,NET Remoting,本文主要介绍了.NET远程方法调用的原理,实现以及与微软...
session facade:基于在线式银行的应用 session facade 远程调用 EJB
8.3.1 开发远程调用的无状态 Session Bean 304 8.3.2 开发本地调用的无状态 Session Bean 311 8.4 发布Session Bean 314 8.4.1 打包EJB-JAR 315 8.4.2 Annotation与部署描述文件 315 8.5 开发有状态的Session Bean ...
RMI是Java的一组拥护开发分布式...比如,一个EJB可以通过RMI调用Web上另一台机器上的EJB远程方法。 RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能
各种EJB之间的调用源码,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB
ejb3.0培训教程与源码 #######含真正配套源码 .................... 1, 服务器端的一个组件模型,能部署在多层...4)远程的调用:屏蔽了很多细节 5)并发请求 ( EJB都是单线程的 ); 不要在EJB的代码中写多线程的代码;
在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后...