簡單的EJB開發執行個體,JBOSS4.0+ECLIPSE3.1

來源:互聯網
上載者:User

相信很多剛學做J2EE開發的人都會覺得入手很麻煩,特獻上前不久整理給一學弟看的一個EJB應用樣本,開發環境是JBOSS4.0.2+ECLIPSE3.1。
軟體下載配置安裝我就不多說了,相信大家都會很輕易搞定。

開發流程,寫一個簡單的stateful session bean,進行遠程調用,計算出某一特定正整數的Fibonacci值。

所建立的project下引入jbossall-client.jar,在JBOSS_HOME/client目錄下
分別用eclipse寫出EJB遠程調用的home介面,remote介面和相對應的Bean

———1. home介面———
package com.terry.ejbsample;

import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;

/**
* @author terry
*
*/
public interface FibonacciHome extends EJBHome
{
  Fibonacci create() throws RemoteException, CreateException;

}

———2. remote 介面———
package com.terry.ejbsample;

import java.rmi.RemoteException;
import javax.ejb.EJBObject;
/**
* @author terry
*
*/
public interface Fibonacci extends EJBObject
{
  public long getFibonacci(int n) throws RemoteException;
}

———3. FibonacciBean———
package com.terry.ejbsample;

import javax.ejb.CreateException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
/**
* @author terry
*
*/
public class FibonacciBean implements SessionBean
{
  public long getFibonacci(int n)
  {
    if (n==0) return 1;
    else if (n==1) return 1;
    else
        return getFibonacci(n - 1) + getFibonacci(n - 2);
  }
  public void ejbCreate() throws CreateException
{
System.out.println(“Bean created”);
}
  public void ejbRemove(){}  
  public void ejbActivate(){}  
  public void ejbPassivate(){}
  public void setSessionContext(SessionContext ctx){}
}

配置相對應的ejb-jar.xml和jboss.xml檔案
———1. ejb-jar.xml———
<?xml version="1.0"?>

<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
                http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
  version="2.1">
  <enterprise-beans>
    <session>
        <ejb-name>Fibonacci</ejb-name>
        <home>com.terry.ejbsample.FibonacciHome</home>
        <remote>com.terry.ejbsample.Fibonacci</remote>
        <ejb-class>com.terry.ejbsample.FibonacciBean</ejb-class>
        <session-type>Stateful</session-type>
        <transaction-type>Container</transaction-type>
    </session>
  </enterprise-beans>
</ejb-jar>
———2. jboss.xml———
<?xml version="1.0"?>

<jboss>
  <enterprise-beans>
    <session>
        <ejb-name>Fibonacci</ejb-name>
        <jndi-name>FibonacciHome</jndi-name>
    </session>
  </enterprise-beans>
</jboss>
在Eclipse中配置所需package的jar包,將class檔案以及xml描述檔案分別添加進去,注意正確的首碼,xml檔案必須在根目錄下的META-INF檔案夾中。或者你可以在console視窗使用jar命令進行打包(如 jar cf ff.jar *)

將剛剛打包的ff.jar放入JBOSS_HOME/server/default/deploy,啟動jboss的預設伺服器,如果一切順利的話,你會在console視窗中看到你剛剛所寫的FibonacciBean已經被成功部署到jboss中了。

寫一個簡單的測試程式
———FibonacciClient.java———
package com.terry.ejbsample;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
/**
* @author terry
*
*/
public class FibonacciClient
{
  public static void main(String[] args)
  {
    try
    {
        java.util.Properties p = new java.util.Properties();
        p.put(Context.INITIAL_CONTEXT_FACTORY,
            "org.jnp.interfaces.NamingContextFactory");
        p.put(Context.URL_PKG_PREFIXES, "jboss.naming:org.jnp.interfaces");
        p.put(Context.PROVIDER_URL, "localhost:1099");
       
        Context jndiContext = new InitialContext(p);
        Object ref = jndiContext.lookup("FibonacciHome");
        FibonacciHome home = (FibonacciHome) PortableRemoteObject.narrow(
            ref, FibonacciHome.class);
        Fibonacci ff = home.create();
        long result;
        for (int i = 40; i >= 0; i--)
        {
          result = ff.getFibonacci(i);
          System.out.println("Fibonacci of" + i + " is " + result);
        }
    } catch (java.rmi.RemoteException re)
    {
        re.printStackTrace();
    } catch (Throwable t)
    {
        t.printStackTrace();
    }
  }
}

解析此例
J2EE應用說白了其實原理也很簡單,J2EE是分布式系統,意味著server與client是通過RMI-IIOP和JNDI進行互動的。簡單來說就是提供給client一種可以遠程調用server端程式的方法,當然其中的細節會比較複雜,不過這些都是你深入之後才會接觸到的東西。
本文樣本,用戶端通過JNDI利用Home介面建立出一個Remote object,再通過調用Remote object 中的方法與FibonacciBean進行互動,處理邏輯。用戶端並不是直接與Bean進行互動。
程式中的ejb-jar.xml是用來描述EJB屬性的,jboss.xml是用來定義ejb-jar.xml中Bean所對應的JNDI資訊。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.