ステートレスセッションBeanのプロパティにアクセスする際に問題が発生しています。これはこれまで私が試したことです。私が紛失しているものを捨ててください。同じパッケージ内でメインクラスからステートレスセッションBeanにアクセスする
私は私のように私のEJBを持って
グローバル/ ENVとしてIBMにバインディングネームスペースは8.5であった持っている:
@Singleton
@Stateless(mappedName="envEJB")
@LocalBean
@ConcurrencyManagement
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public class EnvEJB {
@Resource(lookup="global/env")
protected String env;
@Lock(LockType.READ)
@AccessTimeout(1000)
public String getEnv() {
return env;
}
そして、私のように私のメインクラスにアクセスしようとしています:
Hashtable<String, String> env = new Hashtable<String, String>();
pdEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");
pdEnv.put(Context.PROVIDER_URL, "iiop://localhost:2890");
String str = "java:comp/env/envEJB";
Context context = new InitialContext(env);
EnvironmentEJB ejb = (EnvironmentEJB) context.lookup(str);
私がここで達成しようとしていることは、サーバーからいくつかの名前空間のバインディングにアクセスしようとしていることだけです。
私はString str = "java:app/appname/envEJB";
は私に同じエラーを与えるとして呼び出す
javax.naming.ConfigurationException: Name space accessor for the java: name space has not been set. Possible cause is that the user is specifying a java: URL name in a JNDI Context method call but is not running in a J2EE client or server environment.
を取得していますコールの上に行います。
UPDATE
Hashtable<String, String> pdEnv = new Hashtable<String, String>();
pdEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
pdEnv.put(Context.PROVIDER_URL, "iiop://localhost:2890");
Context context = new InitialContext(pdEnv);
java.lang.Object ejbBusIntf = context.lookup("com.test.EnvironmentEJBRemote");
EnvironmentEJB ejb = (EnvironmentEJB)javax.rmi.PortableRemoteObject.narrow(ejbBusIntf, EnvironmentEJB.class);
として次の例外をしている間は
Exception in thread "P=925268:O=0:CT" java.lang.ClassCastException: cannot cast class org.omg.stub.java.rmi._Remote_Stub to class com.test.EnvironmentEJB
at com.ibm.rmi.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:396)
at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:148)
at com.test.Test.main(Test.java:43)
私はちょうどサーバーに格納されているいくつかの変数にアクセスしたいです。 –
ええ、エラーなしで展開します... –
あなたのBeanを '@ Remote'に変更する必要があります。アプリケーションの外部でローカルBeanを使用することはできません。 – Gas