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

主要问题是实例化InitialContext

这是我的豆子的声明。

   @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);
}


问题是当我尝试在applet中执行相同操作时。小程序被编译为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对于公共部署的applet1不切实际。
as an applet parameter应该很小。就像是:
<applet ..><param name='the.name' value='bidd.data.ejb.UserFacadeLocal'></applet>
in an application resource file可能是可行的,但是大概您需要添加param来识别文件。





applet:这同样适用于JWS应用程序。这是我实际为该部署建议的内容。

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

10-12 03:41