`

ejb1

    博客分类:
  • ejb
阅读更多
http://book.51cto.com/art/201102/244682.htm

    package impl; 
    import itf.Convert; 
    import javax.ejb.Remote; 
    import javax.ejb.Stateless; 
    
    @Stateless (mappedName="ConvertBean")  // EJB是可以被远程调用的。 JNDI名称为"ConvertBean //Stateless  无状态
    @Remote 
    
    public class ConvertBean implements Convert { 
        public String getRmb(String usd){ 
            //从数据库查询汇率,此处简化,假如汇率是6.0 
            double rate = 6.0; 
            double dblUsd = Double.parseDouble(usd); 
            double dblRmb = dblUsd * rate; 
            String rmb = String.valueOf(dblRmb); 
            return rmb; 
        } 
    }

客户端:
public static void main(String[] args) throws Exception{ 
        String usd = "1234"; 
        String jndiName = "ConvertBean#itf.Convert"; 

        Hashtable table = new Hashtable(); 
table.put(Context.INITIAL_CONTEXT_FACTORY, 
"weblogic.jndi.WLInitialContextFactory"); 
        table.put(Context.PROVIDER_URL,"t3://localhost:7001"); 
        //查询服务器中的jndiName 
        Context context = new InitialContext(table); 
        Convert convert = ( Convert) context.lookup(jndiName); 
        String rmb = convert.getRmb(usd); 
        System.out.println(rmb); 
    } 


-------------------------------------------------------------------------

既然是一个EJB为一个客户服务,是否会出现大量的EJB对象消耗内存的情况呢?实际上,EJB中的"钝化"机制,会让长期不用的EJB对象,过了一段时间从内存中腾出空间,存入缓存。

@Stateful (mappedName="ConvertBean")  //Stateful 有状态的
@Remote 


public class ConvertBean implements Convert { 
    …… 
    @Remove 
    public void remove(){ 
       //释放资源 

将JNDI名称写在配置文件中。
首先将"@Stateful (mappedName="ConvertBean")"改为"@Stateful"。编写配置文件的方法如下:

1. 在项目的META-INF下新建ejb-jar.xml

<ejb-jar>
  <enterprise-beans>
    <session>
      <ejb-name>ConvertBean</ejb-name>
      <mapped-name>ConvertBean</mapped-name>
    </session>
  </enterprise-beans>
</ejb-jar>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics