ejb 2.1 jboss

由于“功能培训”继续前进,而我们又没有保持软件堆栈的最新状态,因此我们的团队发现自己处于不得不迁移的不利位置:

  • JBoss 4.2.3到AS 7.1.x(当前为7.1.1)
  • EJB 2.1到EJB 3.1
  • Hibernate2到Hibernate3或4

以快速的方式。 我的意思是,谁想要发布具有8-10年历史的软件的新版本,而不是我! 以下是我在研究从具有EJB 2.1的JBoss 4.2.3升级到具有EJB 3.1的AS 7.1.x时所做的一些研究的结果。 我相信还会有更多

与不久的将来的迁移相关的帖子,但这与JNDI命名区域的更改有关。

过去/当前

在我们当前的代码中,JNDI的命名非常简单:

  1. 我们在部署描述符中将“ ejb /”与远程会话Bean接口的名称连接起来,以指示服务应绑定的名称。
  2. 在代码中,我们使用以下代码来处理JNDI查找。 真正令人高兴的部分是,远程客户端可以在容器内的服务器上以及服务器上使用相同的代码。

当前代码

Hashtable properties = new Hashtable();
properties.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
properties.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
properties.put("java.naming.provider.url", "jnp://localhost:1099");
Context ctx = new InitialContext(properties);
Object ref = ctx.lookup(jndiName);

AS7和EJB 3.1

EJB 3.1规范进行了一些更改,以强制要求EJB的可移植JNDI名称,您可以在AS 7.1.1中继承它。 我发现的另一件棘手的事情是,我无法再使用来自远程客户端和服务器的完全相同的查找代码。

现在,AS 7具有两个用于远程EJB调用的选项 。 您需要的信息可以在JBoss文档中找到,但并没有打动我! 经过几天的努力,我决定创建一个小程序,以帮助(希望)使差异非常清楚。 下面是我创建用来从远程客户端调用无状态会话Bean的程序。 我从7.1快速入门示例中部署了“ ejb-remote”示例。 该代码尝试使用两种远程方法加载远程服务。 可以预期的是,对于第一组查找,第一次查找成功,而第二次使用“ ejb:/”命名格式失败。 然后,将值为“ org.jboss.ejb.client.naming”的Context.URL_PKG_PREFIXES属性添加到传递给InitialContext构造函数的jndi属性中,并重复查找。 现在,两个查找都应该成功。 我已将所有JNDI属性包含在代码中,而不是依赖从类路径中获取的“ jboss-ejb-client.properties ”或“ jndi.properties ”的副本。

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;import java.util.Hashtable;public class EJBClient {private static String[] JNDINAME = {"jboss-as-ejb-remote-app/CalculatorBean!org.jboss.as.quickstarts.ejb.remote.stateless.RemoteCalculator", "ejb:/jboss-as-ejb-remote-app/CalculatorBean!org.jboss.as.quickstarts.ejb.remote.stateless.RemoteCalculator" };private Hashtable jndiProps;public EJBClient() {// setup 'base' jndi properties - no jboss-ejb-client.properties being picked up from classpath!jndiProps = new Hashtable();jndiProps.put("java.naming.factory.initial",
"org.jboss.naming.remote.client.InitialContextFactory");jndiProps.put(InitialContext.PROVIDER_URL, "remote://localhost:4447");jndiProps.put("jboss.naming.client.ejb.context", true);// needed for remote access - remember to run add-user.batjndiProps.put(Context.SECURITY_PRINCIPAL, "client");jndiProps.put(Context.SECURITY_CREDENTIALS, "password");}public void doLookups() {// the 'exported' namespacefor (int i = 0; i < JNDINAME.length; i++) {lookup(JNDINAME[i]);}// This is an important property to set if you want to do EJB invocations via the remote-naming projectjndiProps.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");// now with the ejbfor (int i = 0; i < JNDINAME.length; i++) {lookup(JNDINAME[i]);}}private void lookup(String name) {System.out.println("Lookup name="+name);Context ctx = null;try {ctx = new InitialContext(jndiProps);Object ref = ctx.lookup(name);System.out.println("...Successful");} catch (NamingException e) {System.out.println("...Failed");//System.out.println(e.getMessage());e.printStackTrace();} finally {if (ctx != null) {try {ctx.close();} catch (NamingException e) {}}}}public static void main(String[] args) throws Exception {EJBClient client = new EJBClient();client.doLookups();System.out.println("Done!");}}

服务器端的AS7

现在,在服务器上进行JNDI查找的简单部分与旧方法非常相似,不同之处在于,您仍然需要根据新规范格式化JNDI名称,并且命名工厂不再是jnp版本!

Hashtable jndiProps = new Hashtable();jndiProps.put("java.naming.factory.initial", "org.jboss.as.naming.InitialContextFactory");ctx = new InitialContext(jndiProps);Object ref = ctx.lookup(jndiName);

结论

就像我之前说的那样,该信息已经在JBoss文档中,但是我可能读了几次。 我要寻找的是一个示例,该示例显示了从客户端和服务器加载EJB。

希望这可以帮助!

参考: JBoss AS7 JNDI&EJB 3.1在Scratching我的编程itch博客上,我们的JCG合作伙伴 Mike Miller的命名更改 。

翻译自: https://www.javacodegeeks.com/2013/05/jboss-as7-jndi-ejb-3-1-naming-changes.html

ejb 2.1 jboss

ejb 2.1 jboss_JBoss AS7 JNDI和EJB 3.1命名更改相关推荐

  1. JBoss AS7 JNDI和EJB 3.1命名更改

    由于"功能培训"继续前进,而我们又没有使软件堆栈保持最新,因此我们的团队发现自己处于迁移的不可行位置: JBoss 4.2.3到AS 7.1.x(当前为7.1.1) EJB 2.1 ...

  2. [EJB:011008]Unable to bind EJB Home Interface to the JNDI name: BusinessDelegateBean.

    weblogic部署应用,真的只部署了这么一个应用,其他没找到任何东东,可就是报错,aready in use   . 求高人指导  2014-08-04 控制台报错如下: <2014-8-4 ...

  3. EJB初探(二)为什么需要EJB

    EJB(Enterprise Java Bean)是JavaEE中面向服务的体系架构的解决方案,可以将功能封装在服务器端,以服务的形式对外发布,客户端在无需知道方法细节的情况下来远程调用方法,大大降低 ...

  4. EJB Remote/Local 绑定和JNDI Lookup

    从同事那里学到一种方便的注解SessionBean的方式.代码我放到github去了 https://github.com/EdisonXu/Test/commit/703d49123dca9e666 ...

  5. ejb 2.1 jboss_JBoss AS 8中的Java EE 7和EJB 3.2支持

    ejb 2.1 jboss 你们中有些人可能已经知道Java EE 7规范的Public Final Draft版本已经发布 . 除此以外,此版本的Java EE还引入了EJB规范的EJB 3.2版本 ...

  6. ejb jsf jpa_完整的WebApplication JSF EJB JPA JAAS –第2部分

    ejb jsf jpa 视图–创建和JSF设置 本教程是第1部分的继续. 让我们创建一个新的Dynamic Web Project . 如下图所示创建它: 请注意:在某些时候,Eclipse会询问您是 ...

  7. ejb java bean的区别_关于ejb:Bean,Java Bean和Enterprise Java Bean之间的区别

    本问题已经有最佳答案,请猛点这里访问. 我已经阅读了关于EJB,JavaBean的文章,但是我仍然怀疑"bean"这个词本身是什么意思呢? a)纯术语"bean" ...

  8. ejb构建_如何使用单例EJB,Ehcache和MBean构建和清除参考数据缓存

    ejb构建 在本文中,我将介绍如何使用单例EJB和Ehcache在Java EE中构建简单的参考数据缓存. 高速缓存将在给定的时间段后重置自身,并且可以通过调用REST端点或MBean方法" ...

  9. ejb构建_如何使用单例EJB和MBean构建和清除参考数据缓存

    ejb构建 在我的一个项目中,我需要使用EclipseLink作为ORM框架从Java EE 6 WebLogic环境中的多个源中加载参考数据. 由于我在Java EE世界中找不到与Spring YE ...

最新文章

  1. java spring注解教程,spring注解
  2. 采集音频和摄像头视频并实时H264编码及AAC编码[转]
  3. vi vim常用命令
  4. Vue中JS遍历后台JAVA返回的Map数据,构造对象数组数据格式
  5. VS2015编译Poco+openssl,使用Poco发送HTTPS请求
  6. win10调节屏幕亮度_自动调节电脑屏幕亮度软件,保护你的眼睛
  7. Spring中AOP源码剖析
  8. 列标题 如何删除gridcontrol_GridControl简单属性操作
  9. js 获取浏览器高度和宽度值
  10. Java实现一个会员制度的CD出租销售店,基本的功能有:一是对会员的管理,包括增加会员、删除会员;二是对货品的管理,包括出租、销售CD、进货、统计账目等。
  11. java电器类代码_阅读下列说明和Java代码,将应填入(n)处的字句写在对应栏内。...
  12. c += c-- | ++b;
  13. hbase数据库详解
  14. rstp 小米网络摄像头_各主流摄像头的rtsp地址格式
  15. HTML、css基础知识
  16. bash: /home/xxx/anaconda3/bin/conda: No such file or directory
  17. 【OpenCV+Qt】实现简易视频播放器——支持进度条拖动
  18. 数据结构二叉树后序遍历非递归算法
  19. 报错:Loading mirror speeds from cached hostfile解决方案
  20. 高清视频相关知识和、KMPlayer 硬解码(DXVA)设置、Z520+US15W+GMA500硬解码测试

热门文章

  1. Properties文件的XML格式
  2. 面象对象设计6大原则之六:迪米特原则
  3. 如何使用Mybatis-plus
  4. 【Python】urllib爬取动漫图片
  5. 《四世同堂》金句摘抄(十一)
  6. (归并排序 快排 堆)
  7. java读取Resources下文件
  8. 微型计算机使用键盘上的alt键称为,微型计算机使用的键盘上的Alt键称为_____。...
  9. datatable中某一列最小值_获取DataTable 某一列所有值
  10. junit5和junit4_JUnit 5 –架构