本地接口与远程接口的无状态SessionBean的实现
2011-10-30 11:26
176 查看
远程接口调用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
- Eclipse关联GitHub实现版本控制[一般下载的eclipse里都自带git插件,然后设置本地仓库和远程仓库就可以]
- 传智播客-ejb3(2)-bean类型、jboss基本应用、本地组件和远程组件及其底层实现原理简介
- PHP实现远程下载文件到本地
- git查看本地和远程分支的状态
- JAVA本地远程连接linux程序监控状态
- Git实现从本地加入项目到远程仓库
- EJB3.0开发一个远程接口无状态会话bean
- spring cloud使用Feign实现远程接口的调用
- SaveRemoteFile函数之asp实现保存远程的文件到本地的代码
- 用ASP实现远程抓取网页到本地数据库
- php将远程图片保存到本地服务器的实现代码
- JAVA本地远程连接linux程序监控状态
- 通过nginx实现线上页面访问本地接口
- git查看本地和远程分支的状态
- PHP代码实现远程下载文件到本地的函数
- python实现自动化远程控制(2)--构造抽象类和接口
- 利用xshell实现本地文件和远程CentOS主机文件的互传