我有一个包含大量JAR的EAR文件,其中一个jar包含Local Session Beans(EJB3).我需要从非托管POJO中执行这些会话Bean的JNDI查找,这些POJO也包含在EAR中(在这种情况下也与EJB中的JAR相同).我试过跟随 Glassfish EJB FAQ,但无论我尝试什么,我都会继续收到javax.naming.NameNotFoundException.

我不确定一些事情.我应该在哪里放置我的ejb-jar.xml(我尝试过EARs meta-inf以及JARs meta-inf)?我需要sun-ejb-jar.xml吗?究竟什么是ejb-link,它做了什么?我可能做错了什么(我的配置几乎与常见问题解答中给出的本地查找相同)?

我列出了我尝试的一些配置和结果如下:

<enterprise-beans>
  <session>
    <ejb-name>ITestBean</ejb-name>
    <ejb-class>com.test.TestBean</ejb-class>
    <ejb-local-ref>
      <ejb-ref-name>ITestBean</ejb-ref-name>
      <local>com.test.ITestBean</local>
    </ejb-local-ref>
  </session>
 </enterprise-beans>

应用程序部署但JNDI查找返回null.

<enterprise-beans>
  <session>
    <ejb-name>ITestBean</ejb-name>
    <ejb-class>com.test.TestBean</ejb-class>
    <ejb-local-ref>
      <ejb-ref-name>ITestBean</ejb-ref-name>
      <local>com.test.ITestBean</local>
      <ejb-link>ITestBean</ejb-link>
    </ejb-local-ref>
  </session>
 </enterprise-beans>

应用程序未部署:无法确定EJB 3.0 ref的未解决的Ejb-Ref ITestBean @ jndi的本地业务与远程业务指定.

<enterprise-beans>
  <session>
    <ejb-name>ITestBean</ejb-name>
    <ejb-class>com.test.TestBean</ejb-class>
    <ejb-local-ref>
      <ejb-ref-name>ITestBean</ejb-ref-name>
      <local>com.test.ITestBean</local>
      <ejb-link>MyJar.jar#ITestBean</ejb-link>
    </ejb-local-ref>
  </session>
 </enterprise-beans>

应用程序未部署:错误:未解决:MyJar.jar#ITestBean.

<enterprise-beans>
  <session>
    <ejb-name>ITestBean</ejb-name>
    <local>com.test.ITestBean</local>
    <ejb-local-ref>
      <ejb-ref-name>ITestBean</ejb-ref-name>
    </ejb-local-ref>
  </session>
 </enterprise-beans>

处理EjbDescriptor时出错

解决方法

您始终可以在System.out或日志中转储InitialContext中的所有名称.
//Get all the names in the initial context
NamingEnumeration children = initialContext.list("");

while(children.hasMore()) {
    NameClasspair ncPair = (NameClasspair)children.next();
    System.out.print(ncPair.getName() + " (type ");
    System.out.println(ncPair.getClassName() + ")");
  }
}

java – Glassfish上EAR文件中的EJB3的JNDI查找的更多相关文章

  1. 调试 – 使用带有glassfish服务器的ubuntu上的intelliJ,无法在调试模式下运行Web应用程序

    在使用glassfish3.1.2.2的ubuntu12.04上的intelliJ12.0中,我试图在调试模式下启动我的Web应用程序,但是我收到此错误消息:我尝试用另一个更改domain.xml中的端口9009但它不成功.你能帮我解决这个问题吗?

  2. Ubuntu / Java / Glassfish的奇怪文件名字符编码问题

    简单的System.out.println方法正确显示文件名,并成功将问题文件复制到另一个文件夹.这个事实让我别无选择,只能宣称Glassfish是我的班级,java和linux之间的差距.在Glassfish中是否有任何字符编码特定设置我可以纠正以修复此错误或者我可能错过了某些问题并且问题实际上并不存在?.另外,请参阅Glassfish配置,例如在sun-web.xml中你必须看到这样的东西:

  3. ubuntu – Glassfish 4服务器意外停止

    我是GlassFish的新手,也是一般的应用服务器.我有一个运行Ubuntu的AmazonEC2实例,并安装了GlassFish4.它启动时没有问题,但一段时间后,GlassFish服务器就会自行关闭.我查看了server.log,但一切看起来都很正常,并且没有条目描述任何失败或关闭.关于可能是什么原因的任何输入,或者我应该寻找任何线索的地方?服务器过去常常每天崩溃,但是交换它并没有在几周内崩溃.

  4. java – EJB和线程

    据我所知,从EJB中生成线程是非法的,因为它可能会干扰EJB的生命周期.但是,使用JDK中的预定义Java类是非法的,它在内部生成并处理EJB中的Executor等线程,特别是MDB?解决方法线程和EJB的最大问题是线程是容器大量使用的有限资源,并且线程错误导致线程池泄漏,可以有效地杀死整个JVM实例.执行者应该表现得更好,但它仍然会耗费一段时间的线程;如果有人调整容器以耗尽可用线程,它也可能会立即失败.总结一下,你将走钢丝走路.

  5. Java – EJB3带来了哪些功能,以及EJB3如何与Spring Framework结合?

    我从未参与过ejb工作,当我开始编程Spring时已经到了,我的所有项目都只用Spring,最近我接受了一次采访,他们想要EJB3.0的知识,所以我想知道EJB3.0如何堆栈使用SpringFramework以及为什么现在许多项目都使用SpringFramework而不是EJB3.0,不要在这里引用我,因为我可能是错的如果从实际角度解释使用另一个的差异和好处,我将非常感激.注意请不要给wiki链接作为答案,因为我想了解这个技术如何叠加.更新还有什么是开始学习EJB3的最佳方法,推荐的书籍,在线教程是什么?

  6. java – Hibernate – 持久的多态连接

    我试图了解如何在hibernate中最好地实现多态一对多.例如:现在,我还想通过以下课程保留审计信息:auditEvent.entity的适当映射是什么?另外,Hibernate如何实际坚持这一点?是否会生成一系列连接表,还是有更好的方法?

  7. java-ee – Glassfish中的JNDI配置/查找

    我在Glassfish中遇到一些基本的JNDI配置时遇到了麻烦.我认为应该是一个简单的任务:在运行时,确定特定属性是否设置为true.我认为这是JNDI的一个很好的应用程序,但似乎无法在app服务器和我的servlet代码之间获得正确的路径.以下是我在Glassfish中配置属性的方法:在我的servlet代码中,我试图通过以下方式查找值:除了这条路之外,我还尝试了以下方法但没有成功:>java:

  8. 如何将@Named bean注入Junit测试

    我正在尝试将@Namedbean注入Junit测试.这适用于我的ejb模块,但我的war模块中的相同方法失败了.我想知道为什么我得到org.apache.openejb.OpenEJBException:创建应用程序失败:无法启动owb上下文.我知道这与IssuewithEJB3.1injectedwithCDIbeanwhilerunningJUnit中的问题相同,但它不能与其他模块中的相同.源

  9. java – 在GlassFish 4.1中升级Jackson

    我使用的是GlassFish4.1,其中包括Jackson2.3.2.我想升级到最新版本的Jackson(目前为2.4.4).在GlassFish4.1中升级Jackson的过程是否简单如下:a)停止GlassFishb)删除osgi-cachec)用更新的版本替换glassfish/modules目录中的Jackson2.3.2jard)启动GlassFish谢谢.解决方法请@seehttps:

  10. glassfish – Java EE7的拦截器问题

    我正在测试/切换到JavaEE7(Glassfish4),我遇到的一个问题是拦截器,每当我尝试运行项目时,我都会收到以下错误.SEVERE:Exceptionwhileloadingtheapp:CDIdeploymentfailure:WELD-001417Enabledinterceptorclasscom.xxxxxx.security.SecuredInterceptorinfile:/h

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部