① EJB無狀態的bean(建立EJB的基礎教程)
① EJB無狀態的bean
1.定義
無狀態會話bean是一種企業bean,它通常用來做獨立操作。無狀態會話Bean根據其名字沒有任何關聯的客戶端的狀態,但它可能會保留其例項的狀態。就相當於我們spring中的單例物件,能夠儲存資訊,服務於多個請求連線。
2.建立過程
2.1 建立服務端程式(EJBServer)
選擇Java Enterprise,同時勾選(EJB),注意選擇的jdk一定要是1.7.選擇jboss伺服器進行開發。
建立完成後,會自動在lib下面下載javax.ejb-api.jar,我們新建Hello World介面和HelloWorldBean實現類。
HelloWorldBean:
public interface HelloWorld {
String sayHello(String name);
}
HelloWorldBean:
@Stateless(name = "HelloWorldBean")
@Remote
public class HelloWorldBean implements HelloWorld {
@Override
public String sayHello(String name) {
System.out.println("吳濤濤最可愛!!!");
return "hello"+name;
}
}
Stateless:表示該bean為無狀態的bean。後面的name就是暴露出去的名稱。(預設為我們的方法名稱)
配置Jboss伺服器(注意是選擇war包的方式進行打包,若是失敗或者其他原因,可重新編譯或者重啟伺服器):
啟動伺服器成功(下圖所示是我們的訪問字串):
訪問字串(JNDI的命名規則):
"ejb:" + appName + "/" + moduleName + "/" + beanName + "!" + viewClassName;
部署檔案的名字
final String appName = ""; (as:EJBServerStateFul_war_exploded)
訪問模組的名字
final String moduleName = ""; (as:LibraryStatefulSessionBean)
介面類的全名
final String viewClassName = ""; (as:pers.jhl.session.stateless.LibraryStatefulSessionBeanRemote)
狀態值(適用於有狀態的情況,無狀態可不選)
stateful = "xxx"
完整示例(有狀態的情況之下)
ejb:/EJBServerStateFul_war_exploded/LibraryStatefulSessionBean!pers.jhl.session.stateless.LibraryStatefulSessionBeanRemote?stateful=TMingYi
2.2 建立客戶端程式(EJBClient)
建立普通的java程式。把jbossxxx/bin/client中的jboss-client.jar加入該客戶端的依賴之中。
在src目錄下建立 jboss-ejb-client.properties 配置檔案。
jboss-ejb-client.properties:
endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port=4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.default.username=TMingYi
remote.connection.default.password=root
目錄架構圖如圖所示。(HelloWorld介面就是server端的介面,在maven中我們可以直接依賴,在這裡的官方的做法是吧介面檔案打成jar然後放入client進行依賴,但是這裡沒得必要,我們只要在同一包目錄下,建立這樣一個Hello World介面,效果和打成jar的效果一樣)。
編寫主程式(HelloWorldClient):
import pers.jhl.session.stateless.HelloWorld;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.Properties;
public class HelloWorldClient {
public static void main(String[] args) {
try{
Properties pro = new Properties();
pro.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");
pro.put("jboss.naming.client.ejb.context",true);
Context context = new InitialContext(pro);
HelloWorld h = (HelloWorld) context.lookup("ejb:/EJBServer_war_exploded/HelloWorldBean!pers.jhl.session.stateless.HelloWorld");
System.out.println( h.sayHello("Medlen"));
}catch(NamingException e){
e.printStackTrace();
}
}
}
在伺服器執行的情況下,在執行此程式,即可看到列印:
相關文章
- 27、EJB與JAVA BEAN的區別?JavaBean
- ejb
- EJB簡單理解
- 幽默:無伺服器EJB又回來了伺服器
- 幽默:15年前的EJB和今天的JPA何其相似
- 程式的建立和程式的狀態
- SpringBoot基礎篇Bean之動態註冊Spring BootBean
- Spring基礎(Bean)SpringBean
- Laravel 5.7 巢狀集基礎教程Laravel巢狀
- Blazor中的無狀態元件Blazor元件
- 大資料基礎教程:建立RDD的二種方式大資料
- Spring基礎使用(一)--------IOC、Bean的XML方式SpringBeanXML
- HarmonyOS-基礎之狀態資料共享
- Spring IoC bean 的建立(上)SpringBean
- 工作流從無狀態切換到有狀態的好處
- 基於 Riverpod 的 Flutter 狀態管理Flutter
- Linux基礎命令---iostat顯示裝置狀態LinuxiOS
- Linux基礎命令---netstat顯示網路狀態Linux
- 無狀態協議協議
- Spring Boot 2.x基礎教程:Swagger靜態文件的生成Spring BootSwagger
- 【架構設計】無狀態狀態機在程式碼中的實踐架構
- Spring建立Bean的過程DebugSpringBean
- StateShot - 無侵入的歷史狀態管理庫
- StateShot – 無侵入的歷史狀態管理庫
- GStreamer基礎教程04 - 動態連線Pipeline
- SAP Fiori和WebClient UI的有狀態和無狀態行為設計原理WebclientUI
- 最完整的Markdown基礎教程
- Python基礎之函式的巢狀Python函式巢狀
- Elasticsearch上建立的index是yellow健康狀態的解決方案ElasticsearchIndex
- 最無恥的 HTTP 常用狀態碼圖解HTTP圖解
- React中的高階元件,無狀態元件,PureComponentReact元件
- Xamarin.FormsShell基礎教程(2)建立Shell解決方案ORM
- 系統設計架構:有狀態與無狀態架構
- Web 基礎研發體系的建立Web
- Spring 原始碼(17)Spring Bean的建立過程(8)Bean的初始化Spring原始碼Bean
- Git基礎知識之內部狀態管理系統Git
- Mockito與PowerMock的使用基礎教程Mockito
- 教程:Laravel 集合(Collection)的基礎用法Laravel