java - 在小程序中使用 EJB

标签 java applet ejb

我一直在尝试从小程序中注入(inject)/使用我的 EJB,但没有成功。我创建了一个新的 Java EE Enterprise 应用程序。我正在使用 glassfish 3 和 netbeans 7.1

主要问题是实例化 InitialContext

这是我的 bean 的声明。

   @Stateless
   public class UserFacade implements UserFacadeLocal {
   @PersistenceContext(unitName = "MetroEntitiesPU")
   private EntityManager em;

   @Remote
   public interface UserFacadeLocal {

我已经能够通过包含 gf-client.jar 类路径并使用以下代码来创建独立的 Java 客户端。

try {
   UserFacadeLocal ufl = (UserFacadeLocal) new InitialContext()
     .lookup("bidd.data.ejb.UserFacadeLocal");
   System.out.println("FROM EJB COUNT: " + String.valueOf(ufl.count()));
} catch (NamingException ex) {
    Logger.getLogger(JavaApplication3.class.getName())
      .log(Level.SEVERE, null, ex);
}

问题是当我尝试在小程序中执行相同操作时。该小程序在 jar 文件中编译,然后从 jsp 网站加载,该网站是我在 netbeans 中的企业应用程序的一部分。

这是 init 方法中的一行,它给出了随后的错误。

UserFacadeLocal ufl = (UserFacadeLocal) new InitialContext()
  .lookup("bidd.data.ejb.UserFacadeLocal");

错误

Need to specify class name in environment or system property, 
  or as an applet parameter, 
  or in an application resource file:  java.naming.factory.initial

如何解决这个错误?

最佳答案

Need to specify class name in environment or system property, 
  or as an applet parameter, 
  or in an application resource file:  java.naming.factory.initial
  • environment or system property
    对于公开部署的小程序来说不实用1
  • as an applet parameter
    应该是微不足道的1。类似于:
    <applet ..><param name='the.name' value='bidd.data.ejb.UserFacadeLocal'> </applet>
  • in an application resource file
    可能可行,但大概您需要添加 param识别该文件。
<小时/>
  1. 小程序:这同样适用于 JWS 应用程序。这是我实际上推荐的此部署方式。

关于java - 在小程序中使用 EJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10330792/

相关文章:

java - 跨多个 EJB 的事务

java - JPA2 :i persist a entity , 没有异常但数据没有存入数据库

java - 我的教科书中的小程序设置与默认设置的比较

java - 一个简单的 Applet 的 Java 控制台中的这种错误

java - 关于 JApplet ItemListener

java - 如何使用 Maven 插件从带有注释的现有实体生成 DDL?

java - 有没有办法知道我的主java程序启动的所有进程何时完成执行?

java - 我可以覆盖哈希集确定重复的方式吗?

java - 如何捕获缺少 JSP 文件的异常

java - 电子配置逻辑