【原創】eclipse + JBoss 5 + EJB3開發指南(3):使用Session Bean的本地介面
本文為原創,如需轉載,請註明作者和出處,謝謝!
有時客戶端程式(如JSP、Servlet)會和EJB元件執行在同一個JVM上,如在同一個J2EE伺服器(JBoss、Weblogic等)中執行。這時就沒必要
再通過遠端(remote)介面訪問Session Bean了,因為客戶端和session bean都在同一個jvm上,只需要通過本地介面(local)訪問即可。就象直接訪問本地類一樣(當然,不能直接訪問EJB類,需要使用jndi和 local介面來獲得本地介面物件。當然,也可以通過remote介面來訪問ejb,不過這樣會有一些效能損失。就象在同一臺機器上還通過socket進 行訪問一樣,很多效能都損耗在網路上了。下面我們來舉個簡單的例子來看一下如何使用本地介面來訪問session bean。
先建立一個session bean本地介面,程式碼如下:
關於Session Bean的具體實現類與遠端介面的實現類一樣,讀者可以參考《編寫有狀態的SessionBean》一文中的ShoppingCartBean類。
下面在Eclipse中新建立一個Web工程(工程名:JBossWeb),該工程需要引用MyEJB工程(包含EJB元件的工程),在WebContent目錄中建立一個test.jsp頁面,程式碼如下:
啟動JBoss,在瀏覽器中輸入如下的URL:
http://localhost:8080/JBossWeb/test.jsp
在Eclipse的Console中會輸出如下的資訊:
有時客戶端程式(如JSP、Servlet)會和EJB元件執行在同一個JVM上,如在同一個J2EE伺服器(JBoss、Weblogic等)中執行。這時就沒必要
再通過遠端(remote)介面訪問Session Bean了,因為客戶端和session bean都在同一個jvm上,只需要通過本地介面(local)訪問即可。就象直接訪問本地類一樣(當然,不能直接訪問EJB類,需要使用jndi和 local介面來獲得本地介面物件。當然,也可以通過remote介面來訪問ejb,不過這樣會有一些效能損失。就象在同一臺機器上還通過socket進 行訪問一樣,很多效能都損耗在網路上了。下面我們來舉個簡單的例子來看一下如何使用本地介面來訪問session bean。
先建立一個session bean本地介面,程式碼如下:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->package service;
import java.util.List;
import javax.ejb.Local;
@Local
public interface ShoppingCart
{
// 新增某個商品資訊
public void addCommodity (String value);
// 獲得客戶購買的所有商品的紗銜泥
public List<String> getCommodity();
}
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->package service;
import java.util.List;
import javax.ejb.Local;
@Local
public interface ShoppingCart
{
// 新增某個商品資訊
public void addCommodity (String value);
// 獲得客戶購買的所有商品的紗銜泥
public List<String> getCommodity();
}
關於Session Bean的具體實現類與遠端介面的實現類一樣,讀者可以參考《編寫有狀態的SessionBean》一文中的ShoppingCartBean類。
下面在Eclipse中新建立一個Web工程(工程名:JBossWeb),該工程需要引用MyEJB工程(包含EJB元件的工程),在WebContent目錄中建立一個test.jsp頁面,程式碼如下:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030" import="java.util.List,java.util.Properties,
javax.naming.InitialContext,service.ShoppingCart"%>
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title heretitle>
head>
<body>
body> remote
Properties prop = new Properties();
InitialContext ctx = new InitialContext();
ShoppingCart shoppingCart = (ShoppingCart) ctx
.lookup("ShoppingCartBean/local");
shoppingCart.addCommodity("自行車");
shoppingCart.addCommodity("膝上型電腦");
shoppingCart.addCommodity("液晶電視");
List<String> commodities = shoppingCart.getCommodity();
for(String commodity: commodities)
{
System.out.println(commodity);
}
%>
html>
訪問本地介面要使用的jndi name應為“ShoppingCartBean/local”。Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030" import="java.util.List,java.util.Properties,
javax.naming.InitialContext,service.ShoppingCart"%>
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title heretitle>
head>
<body>
body> remote
Properties prop = new Properties();
InitialContext ctx = new InitialContext();
ShoppingCart shoppingCart = (ShoppingCart) ctx
.lookup("ShoppingCartBean/local");
shoppingCart.addCommodity("自行車");
shoppingCart.addCommodity("膝上型電腦");
shoppingCart.addCommodity("液晶電視");
List<String> commodities = shoppingCart.getCommodity();
for(String commodity: commodities)
{
System.out.println(commodity);
}
%>
html>
啟動JBoss,在瀏覽器中輸入如下的URL:
http://localhost:8080/JBossWeb/test.jsp
在Eclipse的Console中會輸出如下的資訊:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->16:55:17,633 INFO [STDOUT] 自行車
16:55:17,633 INFO [STDOUT] 膝上型電腦
16:55:17,633 INFO [STDOUT] 液晶電視
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->16:55:17,633 INFO [STDOUT] 自行車
16:55:17,633 INFO [STDOUT] 膝上型電腦
16:55:17,633 INFO [STDOUT] 液晶電視
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12921506/viewspace-600516/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【原創】eclipse + JBoss 5 + EJB3開發指南(5):使用配置檔案釋出Session BeanEclipseSessionBean
- 【原創】eclipse + JBoss 5 + EJB3開發指南(4):Session Bean中的註釋方法EclipseSessionBean
- 【原創】eclipse + JBoss 5 + EJB3開發指南(6):編寫第一個實體Bean程式EclipseBean
- 【原創】eclipse + JBoss 5 + EJB3開發指南(2):編寫有狀態的SessionBeanEclipseSessionBean
- Jboss7 部署EJB3 簡明教程
- JBOSS 做專案時的問題 有關Jboss, Mbean, Session bean 求助BeanSession
- 求助:ejb3 的local介面測試
- 求教,eclipse2.1+jboss3.2.2開發EclipseS3
- Oracle資料庫開發指南(原創)Oracle資料庫
- 【原創】Java多執行緒初學者指南(3):使用Runnable介面建立執行緒Java執行緒
- Gavin King真正走上EJB路線,推出基於JSF/EJB3的快速開發框架JBoss SeamJS框架
- eclipse+lomboz+jboss開發疑問(新手)Eclipse
- Eclipse外掛開發(原書第3版)Eclipse
- Eclipse+JBoss+MySQL開發環境設定EclipseMySql開發環境
- 【原創】Java多執行緒初學者指南(5):join方法的使用Java執行緒
- 使用JBOSS開發CMP的問題?
- JBOSS安裝配置並搭建本地開發環境開發環境
- 在eclipse下使用jboss時的除錯Eclipse除錯
- session bean中的session如何理解?SessionBean
- iOS開發 - 介面尺寸指南iOS
- Bran的核心開發指南(5)
- Spring在單例bean中使用session、request範圍的beanSpring單例BeanSession
- jboss to weblogic移值說明(原創)Web
- 【原創】如何優雅的轉換Bean物件Bean物件
- web開發3--cookie&sessionWebCookieSession
- session bean 對 entity bean的訪問策略?SessionBean
- 如何使用bean:write輸出session中的資訊BeanSession
- 一個Session Bean如何去呼叫另外一個Session Bean裡的方法?SessionBean
- 從心出發:indieprize 3款原創精品遊戲背後的開發故事遊戲
- [原創]Eclipse Memory Analyzer tool(MAT)工個使用介紹Eclipse
- session bean + dao +vo ???SessionBean
- 原創:跳坑指南——微信小程式真機預覽跟本地不同的問題微信小程式
- 使用MyEclipse開發Java EE應用:用XDoclet建立EJB 2 Session Bean專案(三)EclipseJavaSessionBean
- 使用MyEclipse開發Java EE應用:用XDoclet建立EJB 2 Session Bean專案(四)EclipseJavaSessionBean
- 使用MyEclipse開發Java EE應用:用XDoclet建立EJB 2 Session Bean專案(五)EclipseJavaSessionBean
- 《iOS應用開發指南——使用HTML5、CSS3和JavaScript》——1.6 小結iOSHTMLCSSS3JavaScript
- [原創]Brida操作指南
- JBoss中EJB的開發(轉)