java EJB 與網路應用執行個體

來源:互聯網
上載者:User

java EJB 與網路應用執行個體

Bean Instance(Bean執行個體)

  一個Bean Instance是Bean位於一個容器中的instantiation,如果把bean比作class,那麼Bean Instance就是Java Object。

  Bean-managed persistence(Bean自己所管理的永續性BMP)

  這個術語是用來描述Enterprise Java Bean如何來儲存它們的state到資料庫教程或者是其他的儲存機制。容器將促使Bean呼叫Bean的EjbLoad()和EjbSave()方法。

  Container(容器)

  一個Bean的容器會實做bean的home interfaces與remote interfaces。它應該提供一組公用程式類別以便能夠隱藏bean instances,介入方法調用,維持交易完整性與bean instances池的一般管理。雖然Ejb規則中規定一個容器必須管理超過一種以上的bean,不過通常每個容器只有一個bean。

  Container-managed demarcation

  對於一個enterprise bean,不論何時,當其中的一個商業方法被呼叫,容器便自動啟動一項新的交易。商業方法完成後,交易就結束了。容器啟動交易的形式由bean的交易屬性來決定,或者,由商業方法本身來決定(如果有指明的話)。

  Container-managed persistence(委託容器管理的永續性CMP)

  Bean開發人員可以委託容器來負責記錄Bean的最新狀態。Bean的狀態必須由Bean中的許多public Fields得到。容器可以確保這些public fields在任何bean的方法被喚醒之前為正確的。public fields必須在deployment descriptor中定義,然後才產生container classes。

  Entity beans

  Entity beans 代表可以辨認的永續物件。典型的執行個體就是:它可以代表關聯式資料庫中個別的rows。當然,也可以是檔案系統中的檔案,或者是任何其他獨一無二的可辨識資料。

  Home

  每一個Enterprise Bean,不論是Session或者是Entity bean,都有一個interface來讓用戶端能夠建立與移除一個bean instance。以Entity為例,home interface 提供一些方法以允許用戶端對於一個bean instance來作定位用。這個interface遵循Java RMI interface的規定。每個home interface都繼承自一個遠端介面,即EJBHome。

  Remote

  一個bean的remote interface 描述對於一個bean instance中可供用戶端呼叫的方法集合。這個interface 遵循Java RMI interface的規定。每個remote interface都繼承自一個遠端介面,即EJBObject。

  Session beans

  Session beans為 particular client所建立。如果經過一段被稱為timeout的指定空閑時間之後,就不再存在。

  Session synchronization

  Session beans 可選擇性地實做Session Synchronization interface。這樣可以允許Session beans在交易將完成之前與完成之後被通知。session bean可以使用beforeCompletion()方法來否決交易的成功完成,並且能夠使用afterCompletion()來判斷交易成功與否。

  Transaction Attribute (事務屬性)

  一項transaction attribute可以用在bean與其特殊的商業方法上。其可能的值有六種,分別是

  TX_NOT_SUPPORTED,TX_REQUIRED,TX_SUPPORTS,

  TX_REQUIRES_NEW,TX_MANDATORY,TX_BEAN_MANAGED

File: jndi.properties

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099


File: Main.java

import javax.naming.InitialContext;

import bean.EmployeeServiceRemote;

public class Main {

  public static void main(String[] a) throws Exception {

    EmployeeServiceRemote service = null;

    // Context compEnv = (Context) new InitialContext().lookup("java:comp/env");

    // service = (HelloService)new
    // InitialContext().lookup("java:comp/env/ejb/HelloService");
    service = (EmployeeServiceRemote) new InitialContext().lookup("EmployeeBean/remote");

    service.doAction();

  }

}


File: Employee.java

package bean;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.PostRemove;

@Entity

public class Employee implements java.io.Serializable {
  private int id;

  private String firstName;

  private String lastName;

  @Id
  @GeneratedValue
  public int getId() {
    return id;
  }


  @PostRemove
  public void postRemove()
  {
     System.out.println("@PostRemove");
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getFirstName() {
    return firstName;
  }

  public void setFirstName(String first) {
    this.firstName = first;
  }

  public String getLastName() {
    return lastName;
  }

  public void setLastName(String last) {
    this.lastName = last;
  }
}


File: EmployeeBean.java

package bean;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;

@Stateless(name = "EmployeeBeanEJB")
@WebService(serviceName = "EmployeeBeanWebService",
            targetNamespace = "http://www.java2s.com/ejb3/credit")
public class EmployeeBean implements EmployeeServiceLocal, EmployeeServiceRemote {

  public EmployeeBean() {
  }

  @WebMethod(operationName = "CreditCheck")
  public boolean validateCC(String cc) {
    return true;
  }

  public void doAction() {
    System.out.println("Processing...");

  }

}


File: EmployeeServiceLocal.java

package bean;
import javax.ejb.Local;
import javax.ejb.Remote;


@Local

public interface EmployeeServiceLocal{
  public void doAction();
}

 

File: EmployeeServiceRemote.java

package bean;
import javax.ejb.Stateless;
import javax.jws.WebService;


public interface EmployeeServiceRemote {
  public void doAction();


}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.