【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
Qt【WebSocket】建立一個簡單的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 下載安裝 伺服器端邏輯 建立自己的伺服器專案(類庫)