菜鳥學EJB(一)——第一個實例


EJB用了那么長時間了,從來沒寫過關於它的東西,挺對不住它的。今天先寫一個簡單的小實例,雖然小但是卻能體現出EJB的核心——分布式。我們可以將業務邏輯的接口跟實現部署到一台機器上,將調用它們的客戶端部署到另一台機器上。至於為什么要用分布式,今天不做討論,以后再細說。


先來看接口:

package com.tjb.ejb;

public interface MyEjb {
    String helloEjb ();
}

 


接下來是對接口的具體實現:

package com.tjb.ejb;

import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;

@Stateless
@Remote
@WebService
public class MyEjbBean implements MyEjb {

    
    public String helloEjb() {
        return "Hello EJB";
    }

}

 


然后編寫一個客戶端來通過接口調用我們的實現:

package com.tgb.ejb;

import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.tjb.ejb.MyEjb;

public class MyEjbClient {


    public static void main(String[] args) throws NamingException {
        
        InitialContext ctx = new InitialContext();
        MyEjb ejb = (MyEjb) ctx.lookup("MyEjbBean/remote");
        String hello = ejb.helloEjb();
        System.out.println(hello);
        
    }

}

 


客戶端實例化一個上下文對象,然后通過其lookup方法查找遠程實現,最后調用具體的方法。客戶端想要成功調用,需要將其接口引用到客戶端的項目里。


客戶端需要建一個名為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=192.168.24.27:1099

 

java.naming.provider.url指的是接口跟實現所在機器的地址和端口。


客戶端跟上面的SessionBean是兩個完全獨立的項目,但是它們可以進行交互,客戶端可以調用SessionBean來完成自己想要的操作,這正是EJB的分布式特性。可以將程序部署到不同的服務器。今天就到這里,以后再說分布式有什么優點。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM