1. 程式人生 > >【EJB學習筆記】——建立一個簡單的EJB應用

【EJB學習筆記】——建立一個簡單的EJB應用

  這裡建立一個簡單的EJB應用,結構如下:

  這裡寫圖片描述

  EJB_DEMO專案型別為EJB Project,是需要部署到JBoss上的EJB應用。EJB_DEMO_CLIENT專案型別為普通的Java Project,是用來模仿呼叫EJB的遠端客戶端。


建立EJB專案—EJB_DEMO

  New—EJB Project

  這裡寫圖片描述

  核心程式碼:

  EJB介面FirstEjb.java

public interface FirstEjb {
    public String saySomething(String name);
}

  實現類FirstEjbBean.java

@Stateless
@Remote
public class FirstEjbBean implements FirstEjb {
    public String saySomething(String name) {
        return "恭喜您:"+name+",您的EJB應用建立成功了!";
    }
}

  這不就是個普通的 類嗎?EJB就是JavaBean,只不過它是企業級的(JavaBeanEnterprise JavaBean),EJB分為三種Bean,即會話Bean(Session Bean)、實體Bean(Entity Bean)、訊息驅動Bean(Message Driven Bean),會話Bean又分為有狀態的會話Bean和無狀態的會話Bean,這裡不再多說,後面會一一介紹。

  這個Demo中,起鍵作用的就是類頭那兩個註解:@Stateless定義這個EJB是無狀態的會話Bean;@Remote定義這個EJB所實現的介面是用來被遠端呼叫的。

  至此,服務端的EJB應用就建立好了,跟部署普通的java web專案一樣,可以把它部署到JBoss上了。


建立客戶端—EJB_DEMO_CLIENT

  New—Java Project

  這裡寫圖片描述

  客戶端既然呼叫EJB,肯定需要它的介面,所以EJB_DEMO_CLIENT需要引用由FirstEjb.java所打的jar包,為了開發簡便,也可以直接讓EJB_DEMO_CLIENT引用EJB_DEMO專案,如果客戶端不是執行在EJB容器中(如JBoss),則需要引用JBoss下的相關jar包(如果用的伺服器是JBoss5或JBoss6的話,則引用JBoss安裝目錄下client中的jar包),此外,客戶端還必須引用jnp-client.jar。

  建立客戶端測試類FirstEjbClient.java

public class FirstEjbClient {
    public static void main(String[] args) throws Exception {
        InitialContext ctx = new InitialContext();
        FirstEjb ejb = (FirstEjb)ctx.lookup("FirstEjbBean/remote");
        String s = ejb.saySomething("Danny");
        System.out.println(s);
    }
}

  InitialContext是javax.naming包下的一個類,可以看做是一個工廠或是Spring中的BeanFactory,用來實現JNDI,所以,客戶端還需要一個配置檔案jndi.properties,用來配置jndi的資訊。

  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

  這時,一個簡單的EJB應用+EJB客戶端就完成了。在JBoss啟動的情況下,執行一下客戶端,是不是成功呼叫EJB並且輸出資訊了呢?

  這裡寫圖片描述

相關推薦

EJB學習筆記——建立一個簡單EJB應用

  這裡建立一個簡單的EJB應用,結構如下:      EJB_DEMO專案型別為EJB Project,是需要部署到JBoss上的EJB應用。EJB_DEMO_CLIENT專案型別為普通的Java

Java編程建立一個簡單的JDBC連接-Drivers, Connection, Statement and PreparedStatement

code ava 語句 ole man for out 讀取 drop 本blog提供了一個簡單的通過JDBC驅動建立JDBC連接例程,並分別通過Statement和PreparedStatement實現對數據庫的查詢。在下一篇blog中將重點比較Statement與P

Android學習筆記Android Studio簡單斷點調試

分享 遇到 跟著 相關 斷點調試 .com 完整 android學習 force 首先點擊斷點調試按鈕運行App 啟動之後,會彈出如下圖的提示框,不要管,幾秒之後這個彈框會自動消失,然後App會成功運行。 下面介紹一下斷點調試的相關操作按鈕對應的功能: 按鈕1的功能:

Flask學習筆記建立一個簡單的Flask應用

1. 做好準備工作進入專案主目錄啟用虛擬環境2. 建立app包:在flask中,含有名為 __init__.py 檔案的子目錄被視為包,可以被匯入。在命令列輸入以下命令,建立一個名為app的目錄:(venv) $ mkdir app在app目錄中建立一個名為__init__.

python學習筆記flask實現簡單的接收json返回json的介面

flask實現簡單的接收json返回json的介面 剛剛學習python想用python flask實現簡單的接收json返回json的介面,微型的前後端分離介面,非常簡單直接上程式碼。 結合http

C#學習筆記反射的簡單用法

常見的使用反射的場景: 程式在執行時動態地訪問類的成員,如獲得類的變數、方法。 例如:用反射給本類的變數賦值。 public class Student{ public string studentName = "小王"; public

K8s學習筆記K8s是如何部署應用的?

## 本文內容 ![](https://img2020.cnblogs.com/blog/1149398/202006/1149398-20200620120651443-1149123992.png) 本文致力於介紹K8s一些基礎概念與串聯部署應用的主體流程,使用Minikube實操 ## 基礎架構

個人學習筆記Java Web用一個簡單的jsp頁面實現輸出100以內的素數

<%@ page language="java" import="java.util.*" contentType="text/html;charset=utf-8" pageEncoding="utf-8"%> <html> <

SSH學習筆記—從配置Struts1環境到簡單實例

swa void tro 介紹 -s exceptio art error con 以下我將從一個簡單點的計算器實例,介紹struts1的環境配置,以及其重要的兩個核心類:ActionForm和Action 簡單計算器實現思路: 1.提供一個輸入界面,

SSH學習筆記用Struts2實現簡單的用戶登錄

utf-8 png rds href -a his ets 屬性 url 準備階段 在使用學習Struts2的時候首先要下載相應的架包 Struts2資源下載 這裏建議下載第一個,在struts-2.5.14.1-all.zip裏有很多實用的東西,不僅有架包還有官方為開發

學習筆記初識FreeMarker簡單使用

als 大小 宋體 屬性 list mage equal port template 楔子:    之前在和同事討論,同事說“jsp技術太古老了,有幾種頁面技術代替,比如FreeMarker、Velocity、thymeleaf,jsp快廢棄了……”雲雲。我這一聽有點心虛…

PyQt5 學習記錄004:簡單多線程筆記

elf false fix sign widgets qtextedit odin 文本 spa 在文本編輯框中每隔幾秒添加一行文本。 1 #!/usr/bin/python3 2 # -*- coding:utf-8 -*- 3 4 import sys 5

QtWebSocket建立一個簡單的websocket連線

1、使用說明 pro檔案中: QT += websockets C++類檔案中: #include <QWebSocket> 2、客戶端的demo 該demo實現的功能: 1、建立webSocket連線; 2、連線中斷後,自動發起重連,週期為3秒。 這裡新建一個類,類

python學習筆記39:認識SQLAlchemy,簡單操作Pandas中的DataFrame

學習《Python3爬蟲、資料清洗與視覺化實戰》時自己的一些實踐。 認識SQLAlchemy SQLAlchemy是Python的ORM工具,就像Java有Hibernate一樣,實現關係型資料庫中的記錄與Python自定義Class的物件的轉化,實現操作之間的對映。

迅為iTop4412學習筆記9.編寫簡單應用呼叫驅動

宣告 以下都是我剛開始看驅動視訊的個人強行解讀,如果有誤請指出,共同進步。 本節目標 編寫簡單應用呼叫驅動 編寫應用就和我們平時寫c檔案差不多了。 首先要包含一些標頭檔案 // 這不解釋 #include <stdio.h>

C++學習筆記一、如何使用Visual Studio2015進行C++專案建立

C++學習常用的編譯環境是Visual Studio系列和GCC系列,其中VS是Win下的編譯器,GCC有Win、Linux和UNIX版本,二者皆可以從網上下載到,GCC是最接近C++標準的,後續有嘗試的價值,作為初學者本文先從VS系列進行學習。 本文內容轉載自:https://www.cnbl

深度學習筆記關於卷積層、池化層、全連線層簡單的比較

卷積層 池化層 全連線層 功能 提取特徵 壓縮特徵圖,提取主要特徵 將學到的“分散式特徵表示”對映到樣本標記空間 操作 可看這個的動態圖,可惜是二維的。對於三維資料比如RGB影象(3通道),卷積核的深度必須

OS學習筆記十 真實模式:實現一個程式載入器-程式載入器如何將使用者程式載入到記憶體並執行

上一篇文章學習了以下內容: 用一種不同的分段方法,從另一個不同的的角度理解處理器的分段記憶體訪問機制 使用迴圈和條件轉移指令來優化主引導扇區程式碼 點選連結檢視上一篇文章:點選連結檢視 對於主引導扇區部分。大概前幾篇文章已經學的差不多了。現在是時候跳過主引

學習筆記建立模式之原型模式

在某些應用程式中,某些物件(一種類別)比較複雜,且其建立過程比較複雜,並且我們需要頻繁使用到這些物件。如果我們一直使用new的方式來建立這些物件,會導致程式效率低下。 如果我們預先建立好該物件(即原型),通過該物件的自我複製(克隆)得到物件例項,從而提高程式碼效

PhotonEngine 學習筆記(一)簡單使用

【PhotonEngine 學習筆記】(一)簡單使用 前言 PhotonEngine簡介 Photon SDKs SDK:SELF-HOSTED 下載安裝 伺服器端邏輯 建立自己的伺服器專案(類庫)