开发具有本地接口的无状态bean

开发具有本地接口的无状态bean

 

 

   我们需要了解以下通过远程接口调用EJB的过程,首先客户端需要与EJB建立起 socket通信,在通信官道上他们之间需要来回

发送IIOP协议消息,因为数据要    在网络进行传输,存放数据的java对象必须要进行序列化。
   
    在这个过程中 我们看到,有网络通信的开销,协议解析的开销,对象序列化的开销。    因为ejb是分布式技术,它允许客户端

与EJB应用在不同一机器上面,所以这些性能开销    也是必然的。但是在实际生产中,我们不可避免这种情况,客户端与EJB应用

运行在同一   个JBOSS中,那么,这个时候客户端是否还有必要跟EJB之间走上面的网络通信呢?    据我们所知,这个时候的客

户端与EJB是在同一个JVM内,他们之间完全可以通过内存    进行交互,如果这样的话,完全可以避免上面流程的开销。所以引入

了本地接口    通过本地接口调用EJB,直接在内存交互,这样就可以避免因网络通信所造成的各种性能开销。


    但是有一点,大家必须要注意的,只有客户端与EJB应用都在同一个JVM内运行的时候 ,我们才能调用本地接口,否则只能

调用远程接口。    简单的理解 ,只要客户端与EJB发布在同一个JBOSS内,我们就认为他们在同一个JVM
   
   

 接口

 package com.launch.out;

      public interface HelloWord {
     public String say(String name);
       }

实现

 

    package com.launch.impl;
         
          import javax.ejb.Remote;
          import javax.ejb.Stateless;
         
          import com.launch.out.HelloWord;
          @Stateless

        //默认就是Local
          @Local(HelloWord.class) 
          public class HelloWordBean implements HelloWord {

        //@EJB Other other;   可以注入其他ejb对象 ,若果有多个是实现可以指定名称
       //  @Resource TimerService timeService 注入其他服务

        // @Resource (mappedName="java:test") DataSource dataSource; 注入数据源
           public String say(String name) {
            
            return name+"how are you .";
           }
         
          }

 

    打包成jar文件发布到jboss下
          
      jsp 调用
          需要打包war文件发布同一个jboss下
          
    import="com.launch.out.HelloWord, javax.naming.*, java.util.Properties"%>
   <%
  Properties props = new Properties();
  props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
  props.setProperty("java.naming.provider.url", "localhost:1099");
  try {
   InitialContext ctx = new InitialContext(props);
   HelloWord helloworld = (HelloWord) ctx.lookup("HelloWordBean/local");
   out.println(helloworld.say("how are you "));
  } catch (NamingException e) {
   out.println(e.getMessage());
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值