本地接口与远程接口的无状态SessionBean的实现
2009-03-26 09:56
169 查看
远程接口调用ejb的过程:
首先客户端需要与ejb建立起socket通信,在通信管道上他们之间需要来回发送IIOP协议消息,因为数据要在网络进行传输,存放数据的java对象必须要进行序列化。这个过程中,有网络通信的开销、协议解析的开销、对象序列化的开销。因为ejb是分布式技术,它允许客户端与ejb应用在不同一机器上面,所以这些开销也是必然的。
本地接口调用ejb的过程:
通过本地接口调用ejb,直接在内存交互,这样就可以避免因网络通信所造成的各种性能开销。
注意:
1.只有客户端与EJB应用都在同一个JVM内运行的时候,我们才能调用本地接口,否则只能调用远程接口。
2.只要客户端与ejb发布在同一个jboss内,我们就认为它们在同一个JVM。
3.客户端可以调用本地接口;也可调用远程接口;当本地接口与远程接口都有同一个方法时,优先调用本地接口中的方法。
开发一个自己的远程接口的无状态会话bean:
1.需要自己开发的EJB的组件.jar包。
注意:在实现类中加入注解,绑定接口。
@Stateless、@Remote(HelloWorld.class) //为接口。
2.需要自己开发出的EJB的客户端,并把客户端工程打成.war文件。
注意:客户端所要知道的JNDI名称,下面的HelloWorld 为远程接口。
InitialContext ctx = new InitialContext();
HelloWorld helloWorld = (HelloWorld)ctx.lookup("HelloWorldBean/remote");
out.println(helloWorld.sayHello("荆州"));
3.把.jar和.war文件拷贝到jboss的deploy区。
4.打开浏览器,输入自己开发出的EJB客户端的.jsp页面,即可。
开发一个自己的本地接口的无状态会话bean:
1.需要自己开发的EJB的组件.jar包。
注意:在实现类中加入注解,绑定接口。
@Stateless、@Local(HelloWorldLocal.class)//接口。
2.需要自己开发出的EJB的客户端,并把客户端工程打成.war文件。
注意:客户端所要知道的JNDI名称,下面的HelloWorldLocal 为本地接口。
InitialContext ctx = new InitialContext();
HelloWorldLocal helloWorld = (HelloWorldLocal)ctx.lookup("HelloWorldLocalBean/local");
out.println(helloWorld.sayHello("荆州"));
3.把.jar和.war文件拷贝到jboss的deploy区。
4.打开浏览器,输入自己开发出的EJB客户端的.jsp页面,即可。
Bean实例的两种管理技术:
1.无状态bean使用实例池技术管理bean;
2.有状态bean使用激活(activation)管理bean。
Jboss生成的JNDI名称,默认命名规则如下:
如果把EJB应用打包成后题为.jar的模块文件,默认的全局JNDI名称是
本地接口:EJB-CLASS-NAME/local
远程接口:EJB-CLASS-NAME/remote
例如:把EJB-HelloWorld(里面包含接口HelloWorld和实现类HelloWorldBean)应用打包成EJB-HelloWorld.jar文件,它的远程接口的JNDI名称是:HelloWorldBean/remote。
jndi.properties的配置:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099
首先客户端需要与ejb建立起socket通信,在通信管道上他们之间需要来回发送IIOP协议消息,因为数据要在网络进行传输,存放数据的java对象必须要进行序列化。这个过程中,有网络通信的开销、协议解析的开销、对象序列化的开销。因为ejb是分布式技术,它允许客户端与ejb应用在不同一机器上面,所以这些开销也是必然的。
本地接口调用ejb的过程:
通过本地接口调用ejb,直接在内存交互,这样就可以避免因网络通信所造成的各种性能开销。
注意:
1.只有客户端与EJB应用都在同一个JVM内运行的时候,我们才能调用本地接口,否则只能调用远程接口。
2.只要客户端与ejb发布在同一个jboss内,我们就认为它们在同一个JVM。
3.客户端可以调用本地接口;也可调用远程接口;当本地接口与远程接口都有同一个方法时,优先调用本地接口中的方法。
开发一个自己的远程接口的无状态会话bean:
1.需要自己开发的EJB的组件.jar包。
注意:在实现类中加入注解,绑定接口。
@Stateless、@Remote(HelloWorld.class) //为接口。
2.需要自己开发出的EJB的客户端,并把客户端工程打成.war文件。
注意:客户端所要知道的JNDI名称,下面的HelloWorld 为远程接口。
InitialContext ctx = new InitialContext();
HelloWorld helloWorld = (HelloWorld)ctx.lookup("HelloWorldBean/remote");
out.println(helloWorld.sayHello("荆州"));
3.把.jar和.war文件拷贝到jboss的deploy区。
4.打开浏览器,输入自己开发出的EJB客户端的.jsp页面,即可。
开发一个自己的本地接口的无状态会话bean:
1.需要自己开发的EJB的组件.jar包。
注意:在实现类中加入注解,绑定接口。
@Stateless、@Local(HelloWorldLocal.class)//接口。
2.需要自己开发出的EJB的客户端,并把客户端工程打成.war文件。
注意:客户端所要知道的JNDI名称,下面的HelloWorldLocal 为本地接口。
InitialContext ctx = new InitialContext();
HelloWorldLocal helloWorld = (HelloWorldLocal)ctx.lookup("HelloWorldLocalBean/local");
out.println(helloWorld.sayHello("荆州"));
3.把.jar和.war文件拷贝到jboss的deploy区。
4.打开浏览器,输入自己开发出的EJB客户端的.jsp页面,即可。
Bean实例的两种管理技术:
1.无状态bean使用实例池技术管理bean;
2.有状态bean使用激活(activation)管理bean。
Jboss生成的JNDI名称,默认命名规则如下:
如果把EJB应用打包成后题为.jar的模块文件,默认的全局JNDI名称是
本地接口:EJB-CLASS-NAME/local
远程接口:EJB-CLASS-NAME/remote
例如:把EJB-HelloWorld(里面包含接口HelloWorld和实现类HelloWorldBean)应用打包成EJB-HelloWorld.jar文件,它的远程接口的JNDI名称是:HelloWorldBean/remote。
jndi.properties的配置:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099
相关文章推荐
- 本地接口与远程接口的无状态SessionBean的实现
- 开发远程和本地接口的无状态会话bean
- 开发实现本地接口的无状态的会话bean
- 树莓派 Learning 002 装机后必要的操作 --- 10 实现本地电脑与远程桌面之间复制粘贴(传输)文件
- Git@OSC实现从本地添加项目到远程仓库
- iOS-本地推送和远程推送,常用的三方推送和常用的测试方法,推送实现和原理详解
- Portlet 接口教程之实现远程人工任务
- Git实现从本地添加项目到远程仓库
- 本地与远程服务器实现文件共享
- fswatch rsync配置使用 实现远程与本地同步
- lsyncd实现同步本地和远程目录
- 接口实现状态保存(三种方法)
- 用swoole framework 实现远程接口调用RPC
- PHP实现的一个保存远程文件到本地的函数分享
- android app通过Geth RPC接口实现远程调用
- 用C/C++实现linux下检测网络接口状态
- EJB——无状态会话Bean的Remote远程接口_hotel.java
- Git实现从本地添加项目到远程仓库
- 使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
- 开发远程接口的无状态会话bean