一聚教程网:一个值得你收藏的教程网站

热门教程

java EJB 与网络应用实例

时间:2022-06-29 00:23:55 编辑:袖梨 来源:一聚教程网

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();


}

热门栏目