您的位置:首页 > 运维架构

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

2010-11-10 20:53 183 查看
开发具有本地接口的无状态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());
  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息