使用Oracle WebLogic對應用程序外部的EJB的引用

在之前的文章中,我們對EJB v。3.0及其為您提供的用于構建Java EE應用程序的可移植機制進行了概述。 由于Java EE規范都是關于可移植性的,因此冒著重復自己的風險,我們經常強調EJB v。3.0規范上仍然存在最重要的可移植性限制:沒有在外部聲明和鏈接對EJB的引用的便攜式方法你的申請。

盡管存在其他一些標準(例如Web服務)可以讓您松散耦合應用程序的組件,但是遠程EJB仍然是完成此任務的理想方法,因為它們的簡單性,標準化,許多IDE的良好開發支持以及良好的支持。他們提供的性能。

在此博客文章中,我們將概述領先的Java EE應用程序服務器之一Oracle WebLogic提供的機制,以支持對應用程序范圍之外的EJB的引用。

Oracle WebLogic中的appededName

符合Java EE的應用服務器提供了其他不可移植的API,工具和機制,用于增強它們實現的標準Java EE功能。 我們在本系列的第一部分中提到的功能之一是mappingName @EJB元素。

盡管EJB 3.0規范對此元素一無所知(已被EJB 3.1規范引入的lookup元素所取代),但許多應用服務器供應商已經以其自己的名字建議的直觀行為實現了它: 將EJB映射到全局JNDI名稱

如果要為了簡化而犧牲可移植性,那么許多應用程序服務器(例如Oracle WebLogic或GlassFish)將允許您使用mapedName元素(或其對應的部署描述符元素)的值定義bean的全局JNDI名稱。甲骨文WebLogic將分配全局JNDI名稱 遠程業務接口。 這并不是真正的限制,因為始終可以使用本系列前面部分中描述的API來引用本地業務接口。

EJB遠程業務接口的Oracle WebLogic命名約定

有了這樣的機制,將引用鏈接到應用程序外部的Bean就很簡單了。 實際上,JDeveloper的EJB向導將使用直觀的命名方案為您提供默認的namedName,該命名方案類似于EJB 3.1規范引入的新的可移植全局JNDI名稱,如以下屏幕快照所示:

JDeveloper建議的命名方案如下:

mappingName = [應用程序名稱]-[模塊名稱]-[bean名稱]

如果采用的話,這種命名方案提供了一種在整個應用程序中為每個bean分配唯一名稱的簡便方法。 我知道這樣的名稱有點尷尬,但由于不可移植,因此是一種與其他名稱一樣好的命名方案。

Oracle WebLogic中遠程EJB接口的全局JNDI名稱

在Oracle WebLogic Application Server中具有mapedName的EJB的遠程業務接口的全局JNDI名稱將是:

mappingName#[interface-FQN]

使用這種命名方案將使您可以構建松散耦合的Java EE應用程序,這些應用程序可以重用其他EJB。 如果要檢查服務器JNDI樹并檢查已部署的EJB的實際名稱,則可以使用WebLogic的JNDI樹檢查器,可以通過打開WebLogic控制臺啟動它,并導航到Environment / Servers / [your-server]頁面,然后使用“ 查看JNDI樹”鏈接。 在下面的屏幕快照中,您可以檢查全局JNDI條目以獲取定義如下的Bean:

package es.reacts;import ...;@Stateless(name = "EJBByMappedName", mappedName = "Application1-EjbTest0-EJBByMappedName")
@Remote
public class EJBByMappedNameBean implements RemoteByMappedName {[...]
}

在屏幕截圖中,您可以欣賞與e s.reacts.RemoteByMappedName業務界面相對應的條目。

定制EJB遠程接口的JNDI名稱

Oracle WebLogic為您提供了必要的工具,以定制和覆蓋其針對EJB遠程接口的默認命名約定。 要分配或覆蓋EJB遠程接口的全局JNDI名稱,可以使用WebLogic特定的部署描述符。 例如,對于EJB模塊,可以使用JDeveloper快速添加默認的weblogic-ejb-jar.xml,或者,如果使用其他IDE(例如NetBeans),則可以創建一個名為weblogic-ejb-jar的新XML文件。模塊的META-INF目錄中的.xml 。 空的weblogic-ejb-jar.xml文件如下所示(從Oracle WebLogic 10.3開始):

<?xml version = '1.0' encoding = 'UTF-8'?>
<weblogic-ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-ejb-jar http://www.bea.com/ns/weblogic/weblogic-ejb-jar/1.0/weblogic-ejb-jar.xsd"xmlns="http://www.bea.com/ns/weblogic/weblogic-ejb-jar">
</weblogic-ejb-jar>

要為給定的EJB遠程接口分配或覆蓋全局JNDI名稱,可以使用以下元素:

<?xml version = '1.0' encoding = 'UTF-8'?>
<weblogic-ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-ejb-jar http://www.bea.com/ns/weblogic/weblogic-ejb-jar/1.0/weblogic-ejb-jar.xsd"xmlns="http://www.bea.com/ns/weblogic/weblogic-ejb-jar"><weblogic-enterprise-bean><ejb-name>SessionTest0</ejb-name><stateless-session-descriptor><business-interface-jndi-name-map><business-remote>es.reacts.SessionTest0</business-remote><jndi-name>global-jndi-name</jndi-name></business-interface-jndi-name-map></stateless-session-descriptor></weblogic-enterprise-bean>
</weblogic-ejb-jar>

如果您使用的是JDeveloper,它為您提供了一個簡單的GUI來編輯weblogic-ejb-jar.xml文件:

通過JDeveloper GUI,您可以輕松地自定義WebLogic部署描述符并配置WebLogic Application Server的其他不可移植功能,例如EJB集群。

將EJB引用鏈接到全局JNDI名稱

在上一節中,我們概述了Oracle WebLogic Application Server提供的用于定制執行環境并為EJB的遠程接口建立全局JNDI名稱的工具。 以同樣的方式,Oracle WebLogic為您提供了其他工具,以使用全局JNDI名稱將EJB引用鏈接到特定的目標EJB。

在到目前為止的示例中,我們始終使用EJB 3.0規范提供的可移植機制將EJB引用鏈接到目標。 如果需要在應用程序范圍之外為遠程EJB建立目標,則可以使用充當EJB客戶端的模塊的特定于WebLogic的部署描述符。 對于到目前為止我們已經使用的Java EE模塊,您可以使用JDeveloper添加特定于WebLogic的部署描述符,稱為weblogic.xml。 如果您正在使用其他IDE,則此文件的框架如下(從Oracle WebLogic 10.3開始):

<?xml version = '1.0' encoding = 'UTF-8'?>
<weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd"xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app"><ejb-reference-description><ejb-ref-name>ejb/myGlobalRef</ejb-ref-name><jndi-name>global-jndi-name</jndi-name></ejb-reference-description>
</weblogic-web-app>

weblogic.xml部署描述符將EJB參考ejb / myGlobalRef與以全局JNDI名稱global-jndi-name存儲的對象相鏈接,該名稱是我們在前面的weblogic-ejb-jar.xml文件中指定的名稱。部分。 該引用將使用@EJB注釋或在標準部署描述符(在本例中為web.xml文件)中像平常一樣聲明。

如果您使用的是JDeveloper,則GUI將幫助您構建特定于WebLogic的部署描述符。 GUI做得很好,還可以掃描您模塊的EJB引用,并在自定義它們時從列表中進行選擇。

參考: The Gray Blog上的JCG合作伙伴 Gray 引用了Oracle WebLogic在您的應用程序外的EJB 。

相關文章 :
  • EJB 3.0注入和查找簡介
  • 基本的EJB參考,注入和查找
  • EJB程序化查找
  • EJB 3.1全局JNDI訪問
  • GWT EJB3 Maven JBoss 5.1集成教程
  • Java泛型快速教程
  • JVM如何處理鎖

翻譯自: https://www.javacodegeeks.com/2011/08/references-to-ejbs-outside-your.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374701.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374701.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374701.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于verilog的分頻器設計(奇偶分頻原理及其電路實現:上)

在一個數字系統中往往需要多種頻率的時鐘脈沖作為驅動源&#xff0c;這樣就需要對FPGA的系統時鐘&#xff08;頻率太高&#xff09;進行分頻。分頻器主要分為奇數分頻&#xff0c;偶數分頻&#xff0c;半整數分頻和小數分頻&#xff0c;在對時鐘要求不是很嚴格的FPGA系統中&…

Java判斷布爾類型是否相等

public class Solution{public static void main(String args[]){boolean x1 true;boolean x2 false;boolean x3 true;if(x1!x2){System.out.println("布爾類型變量判斷是否相等可以用!");}if(x1x3){System.out.println("布爾類型變量判斷是否相等可以用&quo…

mysql 中文亂碼解決方法

最近在.NET 項目中用EF連接mysql&#xff0c;插入中文數據時老是顯示亂碼&#xff0c;在創建表時都已將編碼指定了&#xff0c;但是還是出現亂碼&#xff0c;折騰了一陣子才發現在連接字符串里面也要加上指定編碼 Character Setutf8(serverXXXXX;user idXXXX;passwordXXXXX;Cha…

提升您的休眠引擎

是否想知道如何調整基于Hibernate的應用程序以獲得無縫的可伸縮性和最佳性能&#xff1f; 本文探討了基于Hibernate的應用程序的調整技術&#xff0c;重點是有效但文獻記載不足的調整主題&#xff0c;例如繼承映射&#xff0c;二級緩存和增強的序列標識符生成器。 它還提供了一…

力扣53. 最大子序和

給定一個整數數組 nums &#xff0c;找到一個具有最大和的連續子數組&#xff08;子數組最少包含一個元素&#xff09;&#xff0c;返回其最大和。 思路&#xff1a;每個循環中&#xff0c;sum表示以nums[i]結尾的最大子序和&#xff0c;res表示目前得到的最大子序和。當循環結…

Swift中的延遲加載(懶加載)

Swift方式的延遲加載 而在Swift中&#xff0c;你只需一行代碼即可實現此機制&#xff1a; lazy var players String[]() 簡單、簡潔&#xff0c;直入主題。 但你得記住&#xff0c;你必須使用var關鍵字來定義延遲加載的屬性&#xff0c;不能使用let關鍵字&#xff0c;因為常量…

Spring,Quartz和JavaMail集成教程

Quartz是一個作業調度框架&#xff0c;用于調度要在指定的時間表上執行的作業。JavaMail是一個用于從Java應用程序發送/接收電子郵件的API。 Spring具有集成點&#xff0c;可以集成Quartz和JavaMail&#xff0c;從而使這些API易于使用。 讓我們創建一個小型演示應用程序&#x…

Java_Web三大框架之Hibernate操作數據庫(三)

使用Hibernate操作數據庫需要七個步驟&#xff1a;&#xff08;1&#xff09;讀取并解析配置文件Configuration conf newConfiguration().configure(); &#xff08;2&#xff09;讀取并解析映射信息&#xff0c;創建SessionFactorySessionFactory sf conf.buildSessionFacto…

android布局1

第二類&#xff1a;屬性值必須為id的引用名“id/id-name” 僅RelativeLayout中有效 android:layout_below 在某元素的下方 android:layout_above 在某元素的的上方 android:layout_toLeftOf 在某元素的左邊 android:layout_toRightOf 在某元素的右…

Spring MVC開發–快速教程

這是我們的JCG合作伙伴之一&#xff0c;來自Manoj的有關使用Spring開發Web應用程序的簡短教程&#xff0c; 網址為“ The Khangaonkar Report ”。 &#xff08;注意&#xff1a;對原始帖子進行了少量編輯以提高可讀性&#xff09; Spring MVC使用基于模型視圖控制器體系結構&…

spring mvc controller間跳轉 重定向 傳參

url&#xff1a;http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ 1. 需求背景 需求&#xff1a;spring MVC框架controller間跳轉&#xff0c;需重定向。有幾種情況&#xff1a;不帶參數跳轉&#xff0c;帶參數拼接url形式跳轉&#xff0c;帶參數不拼接參…

尋找數組的中心索引

給你一個整數數組 nums &#xff0c;請計算數組的 中心下標 。 數組 中心下標 是數組的一個下標&#xff0c;其左側所有元素相加的和等于右側所有元素相加的和。 如果中心下標位于數組最左端&#xff0c;那么左側數之和視為 0 &#xff0c;因為在下標的左側不存在元素。這一點…

STL sector 應用

1 #include <iostream>2 #include <string>3 #include <vector>4 #include <cstdio>5 using namespace std;6 int n;7 vector<int> pile[30];8 9 //找到a所在pile和height&#xff0c;以應用的形式返回調用者&#xff0c; 10 void find_block(in…

將Jersey與Spring整合

Spring提供了很多好處&#xff0c;并通過其依賴項注入機制&#xff0c;應用程序生命周期管理和Hibernate支持&#xff08;僅舉幾例&#xff09;促進了最佳實踐。 另外&#xff0c;當您想擁有干凈的類似于REST的服務器端JSON Api時&#xff0c;我發現Jersey非常方便。 本文簡要介…

JAVAWEB 生成excel文字在一格顯示兩位不變成#號

在用java生成excel的時候會發現這種問題&#xff0c; 如果是人家給的模板還好&#xff0c;如果不是模板&#xff0c;而是通過代碼生成的話&#xff0c; 就需要進行處理了&#xff0c; 一個小單元格&#xff0c;如果是一位的話&#xff0c;如1-9顯示沒有問題&#xff0c;一旦是兩…

力扣面試題 01.07. 旋轉矩陣

給你一幅由 N N 矩陣表示的圖像&#xff0c;其中每個像素的大小為 4 字節。請你設計一種算法&#xff0c;將圖像旋轉 90 度。 不占用額外內存空間能否做到&#xff1f; 代碼一 思路&#xff1a;對于矩陣中第 ii 行的第 jj 個元素&#xff0c;在旋轉后&#xff0c;它出現在倒數…

依賴注入–手動方式

依賴注入是一種將行為與依賴解決方案分開的技術。 用簡單的話來說&#xff0c;它允許開發人員定義具有特定功能的類&#xff0c;這些功能取決于各種協作者&#xff0c;而不必定義如何獲取對這些協作者的引用。 以此方式&#xff0c;實現了各個組件之間的解耦&#xff0c;并且通…

一個疏忽引發的思考!(strerror)

前幾天寫代碼因為自己的疏忽導致一遍又一遍的Segmentation fault (core dumped)。該問題是因為strerror&#xff08;errno&#xff09;返回的指針指向非法的內存導致程序打印錯誤時崩潰。 嘗試數次無果&#xff0c;為了進度。簡單粗暴的換成了perror(str)。今天忙里偷閑&#x…

力扣面試題 01.08. 零矩陣

編寫一種算法&#xff0c;若M N矩陣中某個元素為0&#xff0c;則將其所在的行與列清零 代碼一思路&#xff1a; 第一次遍歷時記錄&#xff0c;用兩個布爾類型數組標記行和列中是否有0元素&#xff1b; 第二次遍歷時置零 class Solution {public void setZeroes(int[][] matr…

Java最佳實踐–字符串性能和精確字符串匹配

在使用Java編程語言時&#xff0c;我們將繼續討論與建議的實踐有關的系列文章&#xff0c;我們將討論String性能調優。 我們將專注于如何有效地處理字符串創建&#xff0c; 字符串更改和字符串匹配操作。 此外&#xff0c;我們將提供我們自己的用于精確字符串匹配的最常用算法的…