0

アプレット内からEJBを挿入/使用しようとしましたが、成功しませんでした。新しいJavaEEEnterpriseアプリケーションを作成しました。Glassfish3とNetBeans7.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);
}

問題は、アプレットで同じことをしようとしているときです。アプレットはjarファイルにコンパイルされ、netbeansのエンタープライズアプリケーションの一部であるjspWebサイトからロードされます。

これは、次のエラーを与える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

このエラーを解決する方法は?

4

1 に答える 1

1
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アプリにも当てはまります。これは、この展開で実際に推奨するものです。
于 2012-04-26T10:05:46.577 に答える