weblogic部署ejb能夠經過jar、ear方式。
兩種部署ejb方式的步驟都是一致的
一、啓動domain,並登陸控制檯
二、選擇「部署」-》「安裝」,以下圖所示:
三、選擇ejb程序(這裏以jar方式爲例),選擇ejb-service.jar,如圖所示:
四、選擇部署的目標,注意這裏選擇的是AdminServer、cluster,如圖所示:
【注意:這裏選中AdminServer只是方便從jndi樹中查看ejb服務,真正提供ejb服務的仍是server一、server2】
五、繼續下一步,直到完成便可。部署成功以後,如圖所示:
能夠看到類型爲EJB,狀態爲活動。至此ejb應用已經部署成功,如何查看ejb的jndi呢?往下看。
查看weblogic的jndi樹:
選擇「服務器」-》「AdminServer」-》「配置」-》「通常信息」-》「查看JNDI樹」,如圖所示:
點擊上圖的連接,打開新的頁面,展示jndi的樹結構,以下圖所示:
咱們在jndi的樹結構中找到ejb應用程序的jndi(例子中有兩個remote的ejb,分別是SessionEJB、SwapEJBBean
客戶端調用時,須要使用右欄的「綁定名」做爲jndi的名稱,代碼以下:
package example.ejb;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
public class TestWebLogicEJB {
public static void main(String[] args) throws Exception {
Properties properties=new Properties();
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
properties.setProperty(Context.PROVIDER_URL,"t3://localhost:7101,localhost:7102");
properties.setProperty(Context.SECURITY_PRINCIPAL,"weblogic");
properties.setProperty(Context.SECURITY_CREDENTIALS,"11111111");
Context context = new InitialContext(properties);
SessionEJB session = (SessionEJB) context.lookup("SessionEJB#example.ejb.SessionEJB");
session.addUser("test1");
System.out.println(session.getUsers());
session.addUser("test2");
System.out.println(session.getUsers());
SwapEJB swap = (SwapEJB)context.lookup("SwapEJBBean#example.ejb.SwapEJB");
System.out.println(swap.invoke("test"));
}
}
上面代碼分別調用了兩個remote的ejb服務。
【注意點:
一、Context.PROVIDER_URL,這裏是指定了集羣兩個server的ip、port來負載ejb應用
二、context.lookup,lookup須要制定jndi的名稱,這裏使用前面介紹的jndi綁定名
】
weblogic11g是支持ejb3的,能夠直接使用註解來定義ejb服務了。而不像之前還要建立weblogic-ejb-jar.xml文件來定義。
開發ejb3的程序步驟以下:
一、定義接口(這裏不是必須):
package example.ejb;
public interface SwapEJB {
public abstract String invoke(String request);
}
二、定義ejb的bean(這裏以stateless爲例):
package example.ejb;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless(mappedName = "SwapEJBBean")
@Remote({SwapEJB.class})
public class SwapEJBBean implements SwapEJB {
@Override
public String invoke(String request) {
return "remote response=" + request;
}
}
部署到weblogic下面,須要指定mappedName 這個簡單的ejb例子已放在附件中,有興趣能夠嘗試打成jar包部署試試。 ejb以jar的方式部署存在一些弊端,若是依賴不少第三方庫,就須要增長到weblogic的classpath中。有兩種方式(建議第一種方式): 一、weblogic11g對於domain依賴的第三方庫,能夠直接添加到domain下面的lib文件夾中。如個人lib位置: D:\server\weblogic11\user_projects\domains\springside3\lib weblogic啓動的時候,會把這個文件夾下面的jar追加到啓動腳本的classpath後面 二、手動編輯startWebLogic.cmd,增長第三方庫的jar路徑到classpath中 若是以ear部署就方便許多,附件已貼上ear的包。部署方式沒有任何差異,這裏不介紹了。